parhamft
3 سال پیش توسط parhamft مطرح شد
3 پاسخ

کوئری یا الکوئنت برای رابطه چند به چند

سلام دوستان خسته نباشید
در نظر بگیرید یک تیبل یوزر داریم یک تیبل تگ و یک تیبل نوشته
هر یوزر میتونه چند نوشته داشته باشه که هر نوشته یک تگ داره
حالا میخوام با یک کوئری به ازای هر تگ یوزری که بیشترین نوشته با اون تگ رو داشته در بیارم
ممنون میشم با کوئری راو یا الکوئنت همچین کوئری رو بنویسید


ثبت پرسش جدید
حسین
@h.j432 3 سال پیش آپدیت شد
0

نمیدونم درست متوجه شدم یا نه
شما یه tag دارین که میخواین ببینین کدوم user از همه بیشتر از اون استفاده کرده ؟
اگه درست گفتم کدش اینه

// db structure 
        // users id,email 
        // comments id,user_id,tag_id,text
        // tags id,text

$tag = Tag::find(1) ;

$user = User::query()
            // get user comments with tags
            ->with(["comments","comments.tags"])
            // where comment has tag id 1 
            ->whereHas("comments" ,function( Builder $builder_comments ) use($tag) {
                $builder_comments->where("tag_id",$tag['id'])->withCount("tags") ;
            })
            // sort by tags_count desc 
            ->orderByDesc("tags_count")
            // `first` or `get` 
            ->first() ;

parhamft
تخصص : برنامه نویس لاراول
@parham.ftehrani 3 سال پیش مطرح شد
0

@h.j432 ممنون از پاسختون
فقط من یکی از تگ هارو نمیخوام همه تگ هارو میخوام یعنی لیستی از تگ ها که کاربری که بیشترین استفاده رو داشته از اون تگ رو نمایش بده


حسین
@h.j432 3 سال پیش مطرح شد
0
->first()
// بیشترین 
->get()
// همه 

@parham.ftehrani


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام