За последние 24 часа нас посетил 22651 программист и 1008 роботов. Сейчас ищут 726 программистов ...

Кастомизация регистрации

Тема в разделе "Laravel", создана пользователем lordconst, 25 апр 2020.

  1. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    Нужно, чтобы при регистрации, помимо таблицы users, добавлялась запись в связанную таблицу (там два поля id и user_id, остальные отмечены как nullable и будут заполняться позднее).
    Из документации знаю, что за запись в бд отвечает этот код:
    PHP:
    1. protected function create(array $data)
    2.     {
    3.         return User::create([
    4.             'name' => $data['name'],
    5.             'email' => $data['email'],
    6.             'password' => Hash::make($data['password'])
    7.         ]);
    8.     }
    Также нашел в документации: https://laravel.su/docs/5.4/eloquent-relationships#inserting-and-updating-related-models и я даже могу понять что делается на каждой строчке кода. Но не могу вписать это туда, куда мне нужно; к примеру, как мне узнать айди пользователя, который будет вставлен при новой записи? Или как вписать это в блок return? И так далее. Прошу помощи в этом вопросе.
     
    #1 lordconst, 25 апр 2020
    Последнее редактирование: 25 апр 2020
  2. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    В документации достаточно ясно и емко описано и я понял как делать это в случае обычных моделей, но это регистрация. И задача не просто добавить поля, а запись в связанную таблицу.
    Может быть, это просто, но я испытываю трудности и даже из документации не понимаю как сделать
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Есть там такое понятия как события, точно синтаксис не скажу щас, но after/before к операции. Там и прописывает доп создание.
     
  4. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    это посредники что-ли?
    PHP:
    1. class CreatePerson
    2. {
    3.     /**
    4.      * Handle an incoming request.
    5.      *
    6.      * @param  \Illuminate\Http\Request  $request
    7.      * @param  \Closure  $next
    8.      * @return mixed
    9.      */
    10.     public function handle($request, Closure $next)
    11.     {
    12.         $response = $next($request);
    13.  
    14.         return $response;
    15.     }
    16. }
    Что вписать внутри метода между респонс и ретерном? Имею ввиду как связать нового пользователя с user_id в связанной таблице?
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Нет не посредники... События
     
  6. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    А все равно как связать нового пользователя с user_id в связанной таблице?
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    А поизучать код? Во-первых, любые методы трейтов ларавеля можно в своём контроллере перекрыть. Как - читаем про трейты в PHP
    Во-вторых, там есть событие Registered. https://laravel.ru/docs/v5/events - вот события, так и быть, ссылка на русский :)
    Вот такой вызов есть:
    PHP:
    1. event(new Registered($user = $this->create($request->all())));
    ПОтом перехватываешь событие и делаешь всё, что угодно.

    Вообще, код трейтов доступный, не так сложно разобраться, что там делается. У нас же в PHP всё в исходных кодах, лезешь и смотришь, что происходит. Ctrl+click - моё любимое сочетание в IDE