我有一张p3桌子。它是p2的子节点,p2是p1的子节点。如果p3有另一个子p4a,则加载p4a,并且p4b.where、p4a和p4b是p3的子级。
->has('p1.p2.p3.p4a')->with(['p1.p2.p3.p4a','p1.p2.p3.p4b']);
also tried
->whereHas('p1.p2.p3.p4a', function($q){
$q->with(['p1.p2.p3.p4a','p1.p2.p3.p4b']);
}
Author::->has('p1.p2.p3.p4a')->with(['p1.p2.p3.p4a','p1.p2.p3.p4b'])->where('id',1)->first();预期结果如果p4a至少有一条记录,则获取p4a & p4b的所有记录。
实际结果获取p4a & p4b,即使没有相关记录
发布于 2019-11-06 15:38:19
Dilip的答案是正确的,还有一种方法可以定义要加载的现有数量
下面的示例来自laravel的文档。在函数中,你可以让所有的conditions.would为你工作?
// Retrieve posts with at least ten comments containing words like foo%...
$posts = App\Post::whereHas('comments', function (Builder $query) {
$query->where('content', 'like', 'foo%');
}, '>=', 10)->get();https://stackoverflow.com/questions/58724912
复制相似问题