محمدهادی غفوری
5 سال پیش توسط محمدهادی غفوری مطرح شد
0 پاسخ

ترکیبی از شرایط And و Or در گرفتن کوئری

سلام
جدول Contents دارای آیتم هایی که هر کدام دارای چندین Tag هستند. یعنی رابطه Content و Tag از نوع Many to Many است.
من میخوام Content هایی را استخراج کنم که مثلاً دارای tag4 یا tag2 هستند و حتماً tag10 یا tag20 را هم دارند.
(tag 2 or tag4)
AND
(tag 10 or tag20)

از این کد استفاده کردم ولی جواب نمیدهد و نتایج را اشتباه بر می گرداند

        $contents=Content::query();
            $contents
                ->whereHas('tags',function($q) {
                    $q->where('tags.id',2);
                    $q->orWhere('tags.id',4);
                })
                ->WhereHas('tags',function($d) {
                    $d->where('tags.id',10);
                    $d->orWhere('tags.id',20);
                })->get();

ممنون میشم اگر راهنمایی کنید.