Подтвердить что ты не робот

Laravel добавляет данные в сводную таблицу при вставке новой записи

У меня есть три таблицы,

roles(id, name);
users(id, email, password);
user_role(id, user_id, role_id);

В этом случае у меня есть таблица пользователей, связанная с таблицей ролей со многими-многими отношениями.

У меня есть две красноречивые модели:

Role
+users(){
    belongsToMany('User')
}

User
+roles(){
    belongsToMany('Role')
}

Теперь возникает вопрос, когда я хочу добавить нового пользователя вместе с идентификаторами ролей, которые я бы хотел назначить пользователям. Как вставить значения в сводную таблицу с помощью лучших методов Laravel?

Мой существующий код: -

$roles = Input::get('roles'); // arrays of role ids

$user = new User();
$user->username = Input::get('username');
$user->password = Hash::make(Input::get('password'));
$user->save();

Что делать дальше???

4b9b3361

Ответ 1

Это действительно все описанные в документации. Пожалуйста, прочтите соответствующий раздел в документации, прежде чем задавать вопрос о SO.

В любом случае, как вы это делаете:

$user = new User();
$user->username = Input::get('username');
$user->password = Hash::make(Input::get('password'));
$user->save();
$user->roles()->attach($roles);

Важная роль заключается в том, что вы должны сохранить пользователя перед тем, как присоединить роли, потому что в противном случае у пользователя нет идентификатора, который еще не используется в сводной таблице.