За последние 24 часа нас посетили 20100 программистов и 1084 робота. Сейчас ищут 710 программистов ...

Регистрация юзера

Тема в разделе "Laravel", создана пользователем kull, 24 мар 2021.

  1. kull

    kull Новичок

    С нами с:
    12 мар 2021
    Сообщения:
    7
    Симпатии:
    0
    Приветствую! У меня есть таблица в базе которую я заполняю данными которые приходят по API.
    В форме регистрации добавил поле score. Это поле нужно для того чтоб в момент регистрации проверить существование юзера в api. Если юзер существует тогда создаю юзера в таблице users.

    В момент записи в базу делаю выборку из таблицы для того чтоб в таблицу users записать id юзера который приходит по api. Для решения этой задачи у меня получился такой метод

    PHP:
    1. protected function create(array $data)
    2. {
    3.     $score = ApiUser::where('score', $data['score'])->first();
    4.  
    5.     $user = User::create([
    6.         'api_user' => $score->user_id,
    7.         'name' => $data['name'],
    8.         'telegram' => $data['telegram'],
    9.         'score' => $data['score'],
    10.         'password' => Hash::make($data['password']),
    11.     ]);
    12.  
    13.     return $user;
    14. }
    В результате юзер создается но поле api_user остается пустым. Почему так происходи?
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Как минимум - нет проверки результатов выполнения запроса к ApiUser.
    В логах наверняка есть ругань по поводу обращения к $score->user_id.... :)
     
  3. kull

    kull Новичок

    С нами с:
    12 мар 2021
    Сообщения:
    7
    Симпатии:
    0
    нет. Пробовал dd($score->user_id) значение выводит но не записывает
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.817
    Симпатии:
    735
    Адрес:
    Татарстан
    может типа в модели поле не фигурирует в качестве $fillable ?
     
    kull нравится это.
  5. kull

    kull Новичок

    С нами с:
    12 мар 2021
    Сообщения:
    7
    Симпатии:
    0
    Вот блин... не как запомнить не могу что в моделе надо поля указывать :) в этом и была причина
     
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    А их и необязательно указывать, только те, что вы хотите, чтоб автоматом заполнялись.
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    $fillable предназначен для т.н. массового заполнения — для назначения полей через в create() или fill().