Php Laravel联接表不返回任何数据
我有两张表Php Laravel联接表不返回任何数据,php,mysql,join,laravel-5,laravel-5.4,Php,Mysql,Join,Laravel 5,Laravel 5.4,我有两张表订单和送货男孩。我加入了这两个表格,以获取送货员的详细信息 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.pi
订单
和送货男孩
。我加入了这两个表格,以获取送货员的详细信息
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\u boy\u id
中有数据时,我将获取所有订单
,但如果它为空,我将不会获取任何数据
最初,当订单到达时,订单
表交货男孩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\u 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
}
希望这有帮助