Laravel Eloquent – использование идентификатора сводной таблицы в качестве внешнего ключа в другой таблице

Мне нужно использовать идентификатор сводной таблицы в качестве внешнего ключа в другой таблице.

например, у меня есть следующие таблицы:

users: id, username, ... places: id, placename, lat, lng, ... place_user: id, user_id, place_id routes: place_user_id, lat, lng, inserted_at. 

поэтому, когда пользователь говорит, что я собираюсь в это место, у меня есть новая запись в таблице place_user и начинаю регистрировать маршрут, который он занимает, чтобы добраться туда. Поэтому для каждой записи place_user у меня есть много записей в таблице маршрутов.

Каков правильный способ делать подобные отношения с помощью красноречия? Должен ли я создать модель для сводной таблицы?

Я попытался решить свою проблему по следующему решению, но не повезло: https://github.com/laravel/framework/issues/2093#issuecomment-39154456 и разместил там комментарий https://github.com/laravel/framework / вопросы / 2093 # issuecomment-58187802

любые предложения будут оценены.

После многих поисков и тестирования различных решений я придумал следующее решение:

Модель пользователя:

 class User extends \Eloquent { public function places() { return $this->hasMany('PlaceUser')->with('Place'); } } 

Место Модель:

 class Place extends \Eloquent { public function users() { return $this->hasMany('PlaceUser')->with('User'); } } 

Модель PlaceUser:

 class PlaceUser extends \Eloquent { public function user() { return $this->belongsTo('User'); } public function place() { return $this->belongsTo('Place'); } public function footprints() { return $this->hasMany('Footprint'); } } 

У меня есть измененный маршрут имени для отслеживания, чтобы избежать проблем с классом маршрута, включенным в laravel.

Модель следа:

 class Footprint extends \Eloquent { public function place_user() { return $this->belongsTo('PlaceUser'); } } 

В конце я получаю структуру, где я могу делать разные запросы, например:

 // gets all places with corresponding pivot table entries and users table entries Place::with('users')->get(); // get user with id=1 including corresponding pivot table entries and places table entries User::with('places')->find(1); // get footprint of the user $user->places->get(0)->footprints 

надеюсь это поможет