我很难理解WhereHas中的关系计数条件 . 文档页面没有讨论它,但API page谈论它 . 来自API的报价 .
Builder | Builder whereHas(string $ relation,Closure $ callback,string $ operator ='> =',int $ count = 1)向where子句的查询添加关系计数条件 .
Example
Resource
模型与 ResourceCategory
有多对多的关系
public function categories()
{
return $this->belongsToMany('ResourceCategory', 'resource_category_mapping');
}
Relationship condition in Has
Has中的关系条件正如预期的那样工作 .
Resource::has('categories', '>', 1)->get()
//this return all resources which have more than one catgories
Relationship condition in WhereHas
WhereHas中的关系条件未按预期工作 . 我确信我误解了它 .
Resource::whereHas('categories', function ( $query){
$query->whereIn('resource_category_id', [1, 2, 4]);
}, '>', 1)->get()
上面的代码应该返回其类别属于[1,2,4]的资源,并且资源具有多个类别 . 但事实并非如此 .
Question
请在WhereHas中解释关系条件,可能提供一个例子会有很大帮助 .
1 回答
通常, whereHas() 检查您的模型是否具有 at least one 相关模型 . 您可以将 $count 设置为某个更高的值,以将计数增加到 N ,并仅获取至少具有 N 相关模型的模型 .
在你的情况下,打电话
将仅返回具有 at least 2 相关类别的 Resources .