gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:04:57 24 4
gpt4 key购买 nike

我很难理解 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.

示例

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 中的关系条件,提供一个例子可能会有很大帮助。

最佳答案

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

在你的例子中,调用

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

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

关于php - WhereHas Laravel 中的关系计数条件是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31624165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com