gpt4 book ai didi

php - Laravel - 有没有办法结合 whereHas 和 with

转载 作者:可可西里 更新时间:2023-11-01 00:41:39 28 4
gpt4 key购买 nike

我目前面临一个小问题。仅当存在与特定条件的关系时,我才想返回模型。使用 whereHas() 方法可以很好地工作。

$m = Model
::whereHas(
'programs',
function($q) {
$q->active();
}
);

但是,像这样将关系作为属性调用会给我全部(未过滤的结果)。

$m->programs;

所以基本上我现在正在做的是:

$m = Model
::whereHas(
'programs',
function($q) {
$q->active();
}
)
->with(array('programs' => function($q) {
$q->active();
}))
;

这很好用,但我对再次做同样的事情感到非常难过。那不是正确的方法。如何在不复制代码的情况下实现这一点?

最佳答案

如果“事件程序”的概念在您的应用程序中很重要,请考虑为事件程序创建一个单独的关系(在这种情况下,我假设您有一个 HasMany 关系):

class Model
{
public function activePrograms()
{
return $this->hasMany(Program::class)->active();
}
}

然后您可以将查询简化为:

Model::with('activePrograms')->has('activePrograms')->get();

关于php - Laravel - 有没有办法结合 whereHas 和 with,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711549/

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