Laravel 5.1 – сводная таблица между тремя таблицами, лучший вариант?

У меня 3 таблицы: пользователи, языки и уровни .

У одного пользователя есть много языков и уровень.

Пример:

  • Хорхе говорит: английский передовой, испанский базовый.
  • Питер говорит: английский, итальянский, французский.
  • Луис говорит: испанский, английский, итальянский.

Пользователь таблицы

+----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | | NULL | | | lastname | varchar(50) | NO | | NULL | | +----------+-------------+------+-----+---------+----------------+ 

Языки таблиц

 +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | | NULL | | +-------+-------------+------+-----+---------+----------------+ 

Уровни таблицы

 +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | | NULL | | +-------+-------------+------+-----+---------+----------------+ 

Сводная таблица

 +-------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user_id | int(11) | NO | | NULL | | | language_id | int(11) | NO | | NULL | | | level_id | int(11) | NO | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | +-------------+----------+------+-----+---------+----------------+ 

Вопрос в том, как создать сводную таблицу с тремя таблицами (в doc laravel пример только с 2 таблицами) возможен с тремя таблицами? Как общаться с красноречивым?

Solutions Collecting From Web of "Laravel 5.1 – сводная таблица между тремя таблицами, лучший вариант?"

Ну, у меня есть что-то в проекте, использующем три таблицы и в качестве поворота, поэтому я запускаю:

 Modelo User: class User extends Model{ public function levels(){ return $this->belongsToMany('App\Level','name pivot table')->withPivot('language_id'); } public function languages(){ return $this->belongsToMany('App\Language','name pivot table')->withPivot('level_id'); } } 

Уровни Modelo:

  class Level extends Model{ public function users(){ return $this->belongsToMany('App\User','name pivot table')->withPivot('language_id'); } public function languages(){ return $this->belongsToMany('App\Language','name pivot table')->withPivot('user_id'); } } 

Язык таблицы:

  class Language extends Model{ public function users(){ return $this->belongsToMany('App\User','name pivot table')->withPivot('level_id'); } public function levels(){ return $this->belongsToMany('App\Level','name pivot table')->withPivot('user_id'); } } 

Я надеюсь, что вы будете использовать этот параметр, который я использую для доступа к информации из всех трех таблиц

использовать:

 $user = User::find(1); $user->levels->pivot->language_id; $user->levels->name; $user->languages->pivot->level_id; $user->languages->name; 

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