php – WhereHas Laravel中的关系计数条件是什么

我很难理解WhereHas中的关系计数条件.文档页面没有讨论它,但API page谈论它.来自API的报价.

Builder|Builder whereHas(string $relation, Closure $callback, string
$operator = ‘>=’, int $count = 1)

Add a relationship count condition to the query with where clauses.

资源模型与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中解释关系条件,可能提供一个例子会有很大帮助.

通常,whereHas()检查您的模型是否至少有一个相关模型.您可以将$count设置为更高的值以将计数增加到N,并仅获取至少具有N个相关模型的模型.

在你的情况下,打电话

Resource::has('categories', '>', 2)->get();

将仅返回具有至少2个相关类别的资源.

翻译自:https://stackoverflow.com/questions/31624165/what-is-relationship-count-condition-in-wherehas-laravel

转载注明原文:php – WhereHas Laravel中的关系计数条件是什么