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 将如下所示:

订单:{ ID:“1”,Xpto:“随便”,OrderDetails:{ ID:“1”}}

于 2017-01-09T18:55:04.843 回答