产品
-ID
-标题
类别
-ID
名称
产品类别
-Products_id
-Categories_id
我想实现的目标是获取至少与所有选定类别匹配的所有产品(例如:[1,4,6,9])
并跳过只有一个或多个匹配类别(例如:[6,9])的产品
到目前为止,我的代码...显示了要跳过的产品
关系
public function productcats()
{
return $this->belongsToMany('App\Categories', 'ProductCategories', 'Products_id ', 'Categories_id');
}
$cats = [1,4,6,9];
Products ::whereHas('productcats', function($query) use ($cats){
$query->whereIn('Categories_id', $cats );
})
->paginate(10);
答案 0 :(得分:0)
$products = Products ::whereHas('productcats', function($query) use ($cats){
$query->whereIn('Categories_id', $cats )
->groupBy('Products_id')
->havingRaw( 'COUNT(Products_id) = ?', [count($cats)] );
})
->paginate(10);
对于任何可能需要它的人,我都从这里得到了指导的答案:http://www.sergiy.ca/how-to-write-many-to-many-search-queries-in-mysql-and-hibernate/