我有 2 张桌子orders
和delivery_boys
. 我已加入这 2 个表以获取送货员的详细信息
public function index()
{
$orders = Order::join('delivery_boys', 'delivery_boys.id', 'orders.delivery_boy_id')
->select('orders.id', 'name', 'phone_number', 'orders.address', 'orders.city', 'orders.pincode', 'delivery_time_slot', 'total', 'delivery_boys.name as delivery_boy')
->get();
return view('pages.orders', compact('orders'));
}
orders
当 中有数据时我会得到所有delivery_boy_id
,但如果它是空的,我就不会得到任何数据。
最初当订单进来时,orders
表格delivery_boy_id
将是空的。即使数据为空,我也想要数据。
我怎样才能做到这一点?
谢谢
这是因为默认情况下join
会产生一个内部联接。内连接意味着它只会检索两边都有数据的行。
你所追求的是左连接:
public function index()
{
$orders = Order::leftJoin('delivery_boys', 'delivery_boys.id', 'orders.delivery_boy_id')
->select('orders.id', 'name', 'phone_number', 'orders.address', 'orders.city', 'orders.pincode', 'delivery_time_slot', 'total', 'delivery_boys.name as delivery_boy')
->get();
return view('pages.orders', compact('orders'));
}
或者,您也可以为此设置一个关系:
假设您有一个模型,delivery_boys
只需将以下方法添加到您的Order
模型中:
public function deliveryBoy()
{
return $this->belongsTo(DeliveryBoy::class);
}
获取订单:
$orders = Order::with('deliveryBoy')->get();
最后,要访问有关送货员的信息:
foreach ($orders as $order) {
$order->deliveryBoy->name; //To get the delivery boy's name
}
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句