I have 3 tables (foods, orders and orderItems). I want to get orders of a user with orderItems and foods, but i failed.
Here’s a result what i am getting right now, but i need to get food details instead of food_id.
JavaScript
x
[
{
"id": 16,
"user_id": 2,
"total": "12.50",
"items": [
{
"id": 20,
"order_id": 16,
"food_id": 1,
"quantity": 1,
"food_price": "12.50",
}
]
}
]
OrderController
JavaScript
$user = Auth::user();
return response()->json($user->deliveredOrders()->with('items')->get());
User Model
JavaScript
public function deliveredOrders()
{
return $this->hasMany(Order::class)->where('status', '=', 'delivered');
}
Order Model
JavaScript
public function items()
{
return $this->hasMany(OrderItem::class);
}
Advertisement
Answer
You should define food() method on OrderItem model.
JavaScript
public function food()
{
return $this->belongsTo('AppFood');
}
And get relation data using this:
JavaScript
$user = Auth::user();
return response()->json($user->deliveredOrders()->with('items.food')->get());