Laravel Sync username into pivot table

  laravel, laravel-7, php, pivot, pivot-table

I have an extra column for usernames in my role_user pivot table, how can I sync the username with the roles ?

role_user pivot table

enter image description here

I need to sync the user name in the name field

This is the update function where I have added the sync

public function update(Request $request, User $user)
    {
       
        $role = $request->role;

        $userName = Auth::user();

        $user->roles()->sync([$role=>['name'=>$userName->name]]);

        dd('stop'); 
   }

Here’s the relationship in my User Model

 public function roles()
{
    return $this->belongsToMany(Role::class)->withPivot(['name'])->withTimestamps();
}

Here’s the role_user table migration

 class CreateRoleUserTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('role_user', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('role_id');
            $table->unsignedBigInteger('user_id');
            $table->string('name')->nullable();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('role_user');
    }
}

I got this error if when I tried

enter image description here

Source: Laravel

Leave a Reply