Laravel:询问是否存在关系

时间:2017-02-27 12:09:43

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-5.3

我的模型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

但它显然不是一个非常好的解决方案,因为我重复查询可能效率很低。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

如果条件是修复条件,您可以在Foo中定义另一种关系

public function bar_fix()
{
    return $this->hasMany(Bar::class)->where('someProp', 10);
}

然后在查询中使用此关系:

$r = Foo::has('bar_fix')->with('bar_fix')->get();

但是,如果条件得到解决,这只是有用的。