0
我有一個模型Foo
,其中包含hasMany
與Bar
的關係。Laravel:查詢是否存在關係
我有類似以下的查詢:
$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
我有一個解決方案最接近的存在是這樣的:
$r = Foo::has('bar')
->whereHas('bar', function ($query) {
$query->where('someProp', '=', 10);
})
->with(['bar' => function($query) {
$query->where('someProp', '=', 10);
})->get();
但它顯然不是一個很好的解決方案,可能是非常低效的,因爲我是在重複的查詢。
我該如何解決這個問題?