尝试使用Eloquent模拟LEFT JOIN
并收到错误。基本上,我试图Users
与addresses
,但仅限于某种类型。
此代码不起作用,但我认为您将获得要点:
$user = User::with('addresses', 'cards')->where(function($query) {
$query->where('address.type', '=', 'shipping');
})->find(Auth::user()->id);
如果我离开where
它工作正常,但返回的地址多于我需要/想要的地址。
我怎样才能这样做,所以我只能获得类型='运费'?我也想和cards
做同样的事情。如果没有送货地址,我仍然需要其他一切。
我试图使用Eloquent vs Fluent / DB(我确实做了工作),但是无法弄明白。
后续行动:根据您拥有的PHP版本,您可能需要执行array(load array)
与[load array]
。 Dev和Prod并不总是一样的。
答案 0 :(得分:1)
您可以尝试类似
的内容$user = Auth::user();
$user->load(['cards', 'addresses' => function($q) {
$q->where('type', 'shipping');
}]);
答案 1 :(得分:0)
这种方式会将用户的所有卡片退回给用户,并且只返回类型=' shipping'
的地址$user = User::with(['cards','addresses'=>function($query){
$query->where('type','shipping');
}])->find(Auth::user()->id);