Laravel правильный путь для структуры таблицы «многие ко многим» - PullRequest
0 голосов
/ 27 марта 2019

У меня есть отношение многие ко многим. Допустим, у меня есть много пользователей, которые могут быть во многих группах и наоборот.

Я не хочу составлять таблицу, содержащую следующие столбцы

group_user

id / name / user_id / group_id

Так как у меня есть только 3 группы: младшая, средняя и старшая, я не хочу делать для них еще одну отдельную таблицу. Моя идея состоит в том, чтобы сделать следующий подход:

  1. Создание 3 записей в одной таблице group_user со следующими данными

id / name / user_id / group_id

1 / младший / ноль / ноль

2 / Средний / ноль / ноль

3 / Старший / ноль / ноль

Так что теперь, когда я хочу вставить group_id, я буду использовать эти 3 идентификатора, которые я только что создал с NULL user_id и group_id.

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

id / name / user_id / group_id

4 / NULL / 125/1 -> Идентификатор младшей группы, которая находится в той же таблице.

5 / NULL / 125/3 -> Идентификатор старшей группы в той же таблице.

Is this a valid way to do it? How wrong it is?

1 Ответ

0 голосов
/ 27 марта 2019

Я бы порекомендовал выполнить следующие процедуры:

Таблица 1 Таблица пользователей: id |имя

Таблица 2 таблицы группы: id |имя

Таблица 3 Сводная таблица group_user: id |user_id |group_id

Примечание. Таблица 3 никогда не должна содержать нулевое значение

Соотношение будет следующим: сейчас у нас есть две модели: модель пользователя и модель группы.

оба будут иметь отношение отношение друг к другу.

Вот метод, который вы будете использовать в модели User:

public function groups()
{
    $this->belongsToMany(User::class);
}

А вот метод, который вы будете использовать в модели группы:

public function users()
{
    $this->belongsToMany(Group::class);
}

Это рекомендуемый способ продолжения.

...