Ассигнование списков с laravel-entrust

Я работаю в создании пользователей и ассигновании списков с вида, чтобы потом перемещать их в драйвер. Как только сохранял пользователь, я стараюсь регистрировать список, но в делать это меня производит следующая ошибка:

Undefined property: Illuminate\Database\Eloquent\Collection:: $id

Что сможет вызывать эту ошибку?

Я присоединяю код драйвера:

$user = new User;
$user->card = $request->card;
$user->name = $request->name;
$user->last_name = $request->last_name;
$user->login = $request->login;        
$user->password = bcrypt($request->password);
$user->save();

$role_id = $request->role_id;
$rol = Role::where('id', '=', $role_id)->get();
$user->roles()->attach($rol->id); //Aca me genera el error.
1
задан 27.04.2017, 19:04
1 ответ

Использовав метод get() ты получаешь коллекцию, НЕ единственный элемент.

У как таковой коллекции нет свойства id, именно объект или элемент имеет ее.

Ты можешь решать это двух форм:

  1. Если заранее ты знаешь, что ты только идешь в (deberías), получать реестр, тогда ты можешь использовать метод first():

    $rol = Role::where('id', '=', $role_id)->first();
    $user->roles()->attach($rol->id);
    
  2. Если ты окончательно нуждаешься в том, чтобы использовать get() по какому-то разуму, ты должен тогда снабжать ссылками элемент, в котором ты нуждаешься, возможно будьте первый:

    $rol = Role::where('id', '=', $role_id)->get();
    $user->roles()->attach($rol[0]->id);
    
2
ответ дан 24.11.2019, 12:05