首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >WhereHas拉威尔的关系计数条件是什么?

WhereHas拉威尔的关系计数条件是什么?
EN

Stack Overflow用户
提问于 2015-07-25 07:39:00
回答 1查看 27.3K关注 0票数 21

我很难理解WhereHas中的关系计数条件。docs页面没有讨论它,但是API page讨论过它。引用API的话。

Builder_Builder whereHas(string $relation,闭包$callback,string $operator =‘>,int $count = 1) 将关系计数条件添加到where子句的查询中。

示例

Resource模型与ResourceCategory有多对多的关系

代码语言:javascript
代码运行次数:0
运行
复制
public function categories()
{
    return $this->belongsToMany('ResourceCategory', 'resource_category_mapping');
}

关系条件在Has中的应用

Has中的关系条件正按预期工作。

代码语言:javascript
代码运行次数:0
运行
复制
Resource::has('categories', '>', 1)->get()
//this return all resources which have more than one catgories

关系条件在WhereHas中的应用

WhereHas中的关系条件不像预期的那样工作。我相信我误解了这一点。

代码语言:javascript
代码运行次数:0
运行
复制
Resource::whereHas('categories', function ( $query){
            $query->whereIn('resource_category_id', [1, 2, 4]);
        }, '>', 1)->get()

上面的代码应该返回资源,这些资源的类别属于1、2、4之一,并且资源有多个类别。但事实并非如此。

问题

请用WhereHas解释一下关系状况,也许提供一个例子会很有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-25 09:59:50

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

在你的情况下,打电话

代码语言:javascript
代码运行次数:0
运行
复制
Resource::has('categories', '>', 2)->get();

将只返回那些具有至少两个与相关的的的资源类。

票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31624165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档