作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前面临一个小问题。仅当存在与特定条件的关系时,我才想返回模型。使用 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/
我是一名优秀的程序员,十分优秀!