راکت

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

3 پاسخ

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

parhamft
parhamft
@parham.ftehrani
ثبت پرسش جدید

پاسخ‌ها

3
حسین
حسین
@h.j432

نمیدونم درست متوجه شدم یا نه
شما یه 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
parhamft
@parham.ftehrani

تخصص: برنامه نویس لاراول

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

شاید پاسخ شما همین‌جا باشد

حسین
حسین
@h.j432
->first()
// بیشترین 
->get()
// همه 

@parham.ftehrani

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

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