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