Как сохранить несколько ролей для пользователя в Laravel и хранить в отдельных строках

Чтобы сохранить несколько ролей для пользователя в Laravel, вы можете рассмотреть следующие методы:

  1. Использование красноречивых отношений:

    // User.php model
    public function roles()
    {
       return $this->belongsToMany(Role::class);
    }
    // Role.php model
    public function users()
    {
       return $this->belongsToMany(User::class);
    }
    // Usage
    $user = User::find(1);
    $user->roles()->attach([1, 2, 3]); // Attach multiple role IDs to the user
  2. Использование метода sync():

    $user = User::find(1);
    $user->roles()->sync([1, 2, 3]); // Sync the roles with the provided role IDs
  3. Использование метода save() индивидуально:

    $user = User::find(1);
    
    $roleIds = [1, 2, 3]; // Array of role IDs
    foreach ($roleIds as $roleId) {
       $role = Role::find($roleId);
       $user->roles()->save($role);
    }
  4. Использование метода create():

    $user = User::find(1);
    
    $roleIds = [1, 2, 3]; // Array of role IDs
    foreach ($roleIds as $roleId) {
       $user->roles()->create(['role_id' => $roleId]);
    }
  5. Использование метода Attach():

    $user = User::find(1);
    $user->roles()->attach([
       ['role_id' => 1],
       ['role_id' => 2],
       ['role_id' => 3],
    ]);

Эти методы позволяют сохранять несколько ролей для пользователя в отдельных строках базы данных, используя связи и методы Laravel.