Использование сводной таблицы в качестве ссылки на другую модель - PullRequest
0 голосов
/ 25 августа 2018

Я работаю в сервисе carpool, поэтому у меня есть следующая схема таблицы: user, cars, user_car (сводная таблица, она также имеет дополнительные поля, такие как plate_number), поэтому я могу добавить много автомобилей и пользователяможете выбрать свой автомобиль из наших уже добавленных автомобилей и предоставить дополнительную информацию.Эта машина будет его машиной.

Теперь у меня есть еще одна таблица ride, которая также принимает ссылку id из cars_user. Я установил связь между cars и users.Но каковы будут отношения между Ride и car_user моделью, поскольку car_user может использоваться для многих поездок?

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Вы должны определить сводную таблицу для 3 автомобилей таблицы, пользователей, ездить в каждой из трех моделей, вы создаете 2 отношения с двумя другими таблицами, чтобы ваша сводная таблица имела три столбца, такие как user_id, car_id, ride_id, и, например, ваша пользовательская модель выглядит следующим образом:

public function car() {
return $this->belongsToMany('car', 'user_car_ride');
}

public function ride() {
return $this->belongsToMany('ride', 'user_car_ride');
}

user_car_ride - это имя вашей сводной таблицы

0 голосов
/ 26 августа 2018

Убедитесь, что в сводной таблице user_car есть столбец первичного ключа, он должен выглядеть примерно так:

id, user_id, car_id

Реализация модели UserCar для этой таблицы.

Затем прикрепите отношение к этой модели на вашей Ride модели, например,

public function user_car(){

    return belongsTo('\App\UserCar', 'user_car_id', 'id');

}

Затем вы также можете использовать назначение, чтобы просмотреть результаты этой сводной таблицы

На вашей UserCar модели вы можете получить что-то вроде этого:

public function rides(){

    return hasMany('\App\Ride', 'user_car_id', 'id');

}

Теперь вы можете ссылаться на нее как на любую другую модель из ваших User и Car моделей.

Лично я бы назвал эту таблицу и модель чем-то другим, например car_assignations, CarAssignation, но это ваш выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...