什么是关系计数条件 WhereHas Laravel
我很难理解WhereHas中的关系计数条件。文档页面没有关于它的讨论,但API页面讨论了它。来自 API 的引用。
建造者|生成器 whereHas(字符串 $relation, 闭包 $callback, 字符串 $operator = '>=', int $count = 1)
使用 where 子句向查询中添加关系计数条件。
例
模型具有多对多的关系Resource
ResourceCategory
public function categories()
{
return $this->belongsToMany('ResourceCategory', 'resource_category_mapping');
}
Has 中的关系条件
Has 中的关系条件按预期工作。
Resource::has('categories', '>', 1)->get()
//this return all resources which have more than one catgories
WhereHas中的关系条件
WhereHas 中的关系条件未按预期工作。我确信我误解了它。
Resource::whereHas('categories', function ( $query){
$query->whereIn('resource_category_id', [1, 2, 4]);
}, '>', 1)->get()
上面的代码应返回其类别属于 [1, 2, 4] 之一且资源具有多个类别的资源。但事实并非如此。
问题
请解释一下WhereHas中的关系条件,可能提供一个例子会很有帮助。