Получайте заказы пользователя с orderItems и деталями продукта в Laravel - PullRequest
0 голосов
/ 29 мая 2020

У меня есть 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);
    }

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Вы должны создать это отношение в модели 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());
0 голосов
/ 29 мая 2020

Вы должны определить метод food () в модели OrderItem.

public function food() 
{
   return $this->belongsTo('App\Food');
}

И получить данные отношения, используя это:

$user = Auth::user();
return response()->json($user->deliveredOrders()->with('items.food')->get());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...