Я экспериментирую с отношениями в Laravel и не могу понять это.
У меня есть две таблицы users
и vehicles
.Пользователи могут управлять транспортным средством, а водителей часто заменяют.Для отслеживания этих изменений я создал таблицу history
.Эта таблица содержит user_id
, vehicle_id
, start
и end
.Я хочу получить транспортное средство, на котором движется текущий пользователь, через таблицу истории.
class User extends model {
public function vehicle()
{
// return the current active vehicle for the user
// through the History model.
return $this->hasOne(History::class, 'user_id');
}
public function history()
{
// return all the vehicles that the user has used
// this currently returns the history rows, not the cars
return $this->hasMany(History::class, 'user_id');
}
}
class Vehicle extends model {
public function user()
{
// return the current active user
}
public function users()
{
// return all the users that used this vehicle
}
}
Если я выполню следующий метод в контроллере.
public function showUser()
{
return User::findOrFail(1)->with('vehicle', 'history')->get()
}
Я хочу получить ответотформатирован так:
[
0: {
first_name: 'John',
...
vehicle: {
model: 'BMW ...'
}
history: {
0: {
model: 'BMW ...'
}
1: {
model: 'Audi ...'
}
...
}
}
]