在Laravel 5.6中为多对多关系编写迁移表

时间:2018-11-15 15:41:34

标签: laravel-5

我不知道如何为多对多关系编写迁移表。这是我的代码:

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 :(得分:0)

  

对我来说似乎很完美

从您的迁移脚本中,我了解到您有3个表

  • 工作人员
  • 角色
  • role_staff

其中 staff 是存储所有职员的主表,并且使用 id 列在角色表中完成角色分配角色表的 staff_id 列上的 staff 的值。

稍后,您将所有引用存储在role_staff表中,其中解释了向 whom 赋予角色的角色。

因此通过触发此查询:

for each in data:
    print each['_id']
    print each['name']
    print each['updated']

将为您提供所有人员以及分配给他们的角色的摘要。

  

注意:请在每个模式中定义表relationships