Laravel 使用 id 查询 order_details 的订单

Laravel query order with order_details using id

坚持这一点。 我使用不带 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');
}

但是尝试使用相同的东西来获取特定订单的数据并不 return order_details。

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

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

为什么在传递 id 时表现不同?

试试这样使用:

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

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

laravel 已经根据您在模型中输入的映射转换为关系。 在这种情况下,您的响应中的 orderDetails 将如下所示:

订单:{ 编号:“1”, Xpto: "whatever", 订单详细信息: { 编号:“1” } }

当您使用 find 时,查询在其他指令之前执行。您需要使用 where:

$ordered = $this->order
    ->where('order_id', $id)
    ->with('orderDetails', 'orderDetails.product')
    ->get();