Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 13.03.2017 11:33:27

Запись данных при регистрации в несколько таблиц

Доброго времени суток.
Есть следующий вопрос. Стандартный auth-controller  функция создания пользователя:
Необходимо сделать запись в таблицу привилегий с соответствующим user_id при регистрации нового пользователя. Как я это вижу:

protected function create(array $data)
    {
        Administration::create([
            'user_id'=>'???',
            'department_id'=>'0',
            'group_id'=>'0',
            'ruller_group_id'=>'0',
            'roll_id'=>'0'
        ]);
        return User::create([
            'first_name' => $data['first_name'],
            'sur_name' => $data['sur_name'],
            'second_name' => $data['second_name'],
            'phone' =>$data['phone'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
       
    }

Так вот вопрос, как элегантно получить id пользователя для записи в таблицу administration и что возвращает функция User::create?

Не в сети

#2 13.03.2017 11:37:42

Re: Запись данных при регистрации в несколько таблиц

Проблема решена.
Вот готовый код решения:
protected function create(array $data)
    {
       
        $User = User::create([
            'first_name' => $data['first_name'],
            'sur_name' => $data['sur_name'],
            'second_name' => $data['second_name'],
            'phone' =>$data['phone'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
        Administration::create([
            'user_id'=>$User->id,
            'department_id'=>'0',
            'group_id'=>'0',
            'ruller_group_id'=>'0',
            'roll_id'=>'0'
        ]);
      return $User; 
    }

Не в сети

#3 18.03.2017 11:47:33

Re: Запись данных при регистрации в несколько таблиц

Для обеспечения целостности данных нужно это делать в одной транзакции. Есть вероятность что первый запрос пройдёт а на втором скажем крашнеться сервер баз данных или ещё какая беда произойдёт.

Не в сети

Подвал раздела