大家好,我使用的是Spatie二进制uuid软件包,对此我几乎没有疑问 到目前为止完成的工作: User.php迁移:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->uuid('uuid');
$table->primary('uuid');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
角色迁移只有带有时间戳的基本字段“ name”
数据透视表:role_user
public function up()
{
Schema::create('role_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('role_id')->unsigned()->nullable()->index();
$table->uuid('user_uuid');
});
}
我知道这是完全错误的,我不知道该怎么办,我正在尝试通过此调用保存角色模型
$uuid = '478d7068-ae64-11e8-a665-2c600cf6267b';
$model = User::withUuid($uuid)->first();
$model->roles()->save(new Role(['name' => 'Admin']));
它不起作用,我在哪里出错?我认为这与role_user迁移有关
User.php
public function roles()
{
return $this->belongsToMany(Role::class);
}
答案 0 :(得分:1)
尝试一下,加快迁移速度:
public function up()
{
Schema::create('role_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('role_id')->unsigned()->nullable()->index();
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
$table->uuid('user_uuid');
$table->foreign('user_uuid')->references('uuid')->on('users')->onDelete('cascade');
});
}
角色关系:
public function roles(){
return $this->belongsToMany(Role::class,'role_user','user_uuid','role_id');
}
请让我知道它是否无效
答案 1 :(得分:0)
您应该编辑与此关系
return $this->belongsToMany(Role::class,'role_user','user_uuid','role_id');
如果您提到自己的错误,我们会更好地为您提供帮助