我目前面临一个小问题。我只想在存在特定条件的关系时返回模型。这与 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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)