首页 > 解决方案 > 在 Laravel 中使用 orderItems 和产品详细信息获取用户的订单

问题描述

我有 3 张桌子(食物、订单和订单项)。我想通过 orderItems 和 food 获得用户的订单,但我失败了。

这是我现在得到的结果,但我需要获取食物详细信息而不是 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);
    }

标签: phpmysqllaraveleloquent

解决方案


您应该在 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());

推荐阅读