2017-07-15 5 views
1

私は2つのテーブルordersdelivery_boysを持っています。私はそこdelivery_boy_id内のデータがあるが、それが空である場合、私はどのようなデータが届かないときに私はすべてのordersを取得していますLaravel結合テーブルはデータを返しません

配達の少年の詳細を取得するために
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')); 
} 

をこれら2つのテーブルに参加しています。

最初に注文が入ると、ordersテーブルdelivery_boy_idは空になります。ジョインで空でもデータが必要です。

どうすればこの問題を解決できますか?

はデフォルト joinで内部結合を生成しますので、これはあなた

答えて

1

ありがとうございます。内部結合とは、データが両側にある行だけを取得することを意味します。あなたは左が後にしている何

参加:

あなたはあなただけの必要があるだろうdelivery_boysするためのモデルを持っていると仮定すると:

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')); 
} 

また、あなたもちょうどこのために関係を設定することができ注文を取得するには

public function deliveryBoy() 
{ 
    return $this->belongsTo(DeliveryBoy::class); 
} 

:あなたのOrderモデルに次のメソッドを追加する

$orders = Order::with('deliveryBoy')->get(); 

最後に、配達少年についての情報にアクセスするには:

foreach ($orders as $order) { 

    $order->deliveryBoy->name; //To get the delivery boy's name 
} 

・ホープこのことができます!

+0

ありがとう、本当にありがとうございます –

関連する問題