Eloquent laravel WhereIn All

前端 未结 2 567

I want to return all items with have all categories.

$items = DB::table(\'items\')
              ->join(\'catitem_item\', \'catitem_item.item_id\', \'=\', \'i         


        
相关标签:
2条回答
  • 2021-01-27 08:00

    Try this one:

    $items = DB::table('items')
        ->join('catitem_item', 'catitem_item.item_id', '=', 'items.id')
        ->whereIn('catitem_item.catitem_id', $cats)
        ->groupBy('items.id')
        ->having(DB::raw('count(*)'), '=', count($cats))
        ->select('items.*')
        ->paginate(10);
    

    With HAVING count(*) = 3 the query will only return items that have all listed categories.

    0 讨论(0)
  • 2021-01-27 08:19

    Try like this: Where $cats= [1,2,3];

    $items = DB::table('items')
    ->join('catitem_item', 'catitem_item.item_id', '=', 'items.id')
    ->whereIn('catitem_item.catitem_id', $cats)
    ->paginate(10);
    

    its return items for category 1 and 2 and 3.that means its use for AND opration.

    0 讨论(0)
提交回复
热议问题