我的模型Foo
包含与hasMany
的{{1}}关系。
我的查询类似于以下内容:
Bar
但是,如果item具有满足查询的$r = Foo::with(['bar' => function($query) {
$query->where('someProp', '=', 10);
})->get()
对象,我只想返回Foo
对象。
我知道你可以这样做:
Bar
但是检查是否存在任何$r = Foo::has('bar')
->with(['bar' => function($query) {
$query->where('someProp', '=', 10);
})->get();
项。如果存在bar
bar
项,则不会生效
我最接近解决方案是:
someProp = 10
但它显然不是一个非常好的解决方案,因为我重复查询可能效率很低。
我该如何解决这个问题?
答案 0 :(得分:2)
如果条件是修复条件,您可以在Foo中定义另一种关系
public function bar_fix()
{
return $this->hasMany(Bar::class)->where('someProp', 10);
}
然后在查询中使用此关系:
$r = Foo::has('bar_fix')->with('bar_fix')->get();
但是,如果条件得到解决,这只是有用的。