gpt4 book ai didi

php - Laravel 连接表不返回任何数据

转载 作者:行者123 更新时间:2023-11-28 23:13:00 24 4
gpt4 key购买 nike

我有 2 个表 ordersdelivery_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'));
}

delivery_boy_id 中有数据时,我会得到所有的订单,但如果它是空的,我就不会得到任何数据。

最初当订单进来时,ordersdelivery_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
}

希望这对您有所帮助!

关于php - Laravel 连接表不返回任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45117267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com