Laravel, сводная таблица конфликтует с отношением «многие ко многим» - PullRequest
0 голосов
/ 02 сентября 2018

Привет, ребята, поэтому я использую пакет spatie binary 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();
    });
 }

В миграции ролей просто есть базовое поле, называемое «имя» с временными метками

Сводная таблица: 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);
}

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Вы должны отредактировать свое отношение к этому

return $this->belongsToMany(Role::class,'role_user','user_uuid','role_id');

если вы скажете о своей ошибке, мы лучше поможем вам

0 голосов
/ 02 сентября 2018

попробуйте это, сводная миграция:

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');
}

пожалуйста, дайте мне знать, если это не сработало

...