猿问

在 Laravel 中获取具有 orderItems 和产品详细信息的用户订单

我有 3 个表(食物、订单和 orderItems)。我想通过 orderItems 和食品获得用户的订单,但我失败了。


这是我现在得到的结果,但我需要获取食物详细信息而不是 food_id。


[

    {

        "id": 16,

        "user_id": 2,

        "total": "12.50",

        "items": [

            {

                "id": 20,

                "order_id": 16,

                "food_id": 1,

                "quantity": 1,

                "food_price": "12.50",

            }

        ]

    }

]

订单控制器


$user = Auth::user();

return response()->json($user->deliveredOrders()->with('items')->get());

用户模型


public function deliveredOrders()

{

    return $this->hasMany(Order::class)->where('status', '=', 'delivered');

}

订货型号


public function items()

    {

        return $this->hasMany(OrderItem::class);

    }


ibeautiful
浏览 138回答 2
2回答

慕田峪9158850

您应该在 OrderItem 模型中创建此关系public function food() {   return $this->belongsTo('App\Food'); //or wherever you have the model }然后得到它$user = Auth::user();return response()->json($user->deliveredOrders()->with('items.food')->get());

慕标5832272

您应该在 OrderItem 模型上定义 food() 方法。public function food() {   return $this->belongsTo('App\Food');}并使用此获取关系数据:$user = Auth::user();return response()->json($user->deliveredOrders()->with('items.food')->get());
随时随地看视频慕课网APP
我要回答