0

これにこだわった。Id なしでこの同じクエリを使用して、このすべてのデータを正常に取得します。

$orders = $this->order
    ->with('orderDetails', 'orderDetails.product')
    ->today()
    ->get();

関係

注文:

public function orderDetails(){
    return $this->hasMany('App\OrderDetail', 'order_id');
}

注文詳細:

 public function order()
{
    return $this->belongsTo('App\Order', 'order_id', 'id');
}

public function product()
{
    return $this->belongsTo('App\Product', 'id_products', 'id');
}

しかし、同じものを使用して特定の注文のデータを取得しようとしても、order_details は返されません。

   public function invoice(Request $request, $id)
  {
    $ordered = $this->order
        ->find($id)
        ->with('orderDetails', 'orderDetails.product');

   return response()->json($ordered);
  }

ID を渡すと動作が異なるのはなぜですか?

4

2 に答える 2

1

クエリを使用するfindと、他のディレクティブの前に実行されます。あなたが使用している必要がありますwhere

$ordered = $this->order
    ->where('order_id', $id)
    ->with('orderDetails', 'orderDetails.product')
    ->get();
于 2017-01-10T00:55:09.490 に答える
1

このように使用してみてください:

$ordered = $this->order->find($id);

return response()->json($ordered);

laravel は、モデルに入力したマッピングなしに基づいて、すでにリレーションシップに変換されています。この場合、応答の orderDetails は次のようになります。

Order: { Id: "1", Xpto: "whatever", OrderDetails: { Id: "1" } }

于 2017-01-09T18:55:04.843 に答える