Написание таблиц миграции для отношений «многие ко многим» в Laravel 5.6 - PullRequest
0 голосов
/ 15 ноября 2018

Я не знаю, как писать таблицы миграции для отношений «многие ко многим». Вот мой код:

Schema::create('staff', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->string('firstname');
        $table->string('lastname');
        $table->char('link', 100)->nullable();
        $table->string('country')->nullable();
        $table->string('city')->nullable();
        $table->string('occupation')->nullable();
        $table->string('zipcode')->nullable();
        $table->string('photo')->nullable();
        $table->rememberToken();
        $table->timestamps(); });

Schema::create('roles', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->integer('staff_id')->unsigned();
        $table->foreign('staff_id')->references('id')->on('staff');
        $table->timestamps();
    });
Schema::create('role_staff', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('role_id')->unsigned();
        $table->integer('staff_id')->unsigned();;
        $table->foreign('staff_id')->references('id')->on('staff');
        $table->foreign('role_id')->references('id')->on('roles');
        $table->timestamps();
    });

Я не уверен, что правильно сделал с точки зрения внешних ключей?

1 Ответ

0 голосов
/ 16 ноября 2018

Мне кажется идеальным

Из вашего сценария миграции я понял, что у вас есть 3 таблицы

  • персонал
  • роли
  • role_staff

Где staff - это главная таблица, в которой хранится весь персонал, и назначение роли выполняется в таблица ролей с использованием столбца id staff в столбце staff_id таблицы role .

Позже вы сохраняете все ссылки в таблице role_staff, где role присваивается , кому объяснено.

Итак, запустив этот запрос:

SELECT * 
FROM   role_staff AS rs 
       INNER JOIN staff s 
               ON rs.staff_id = s.id 
       INNER JOIN roles r 
              ON rs.role_id = r.id 

даст вам сводку всех сотрудников и назначенных им ролей.

Примечание: Определитеваш стол отношения в каждом модале.

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