Попытка присвоить свойству «referer_uid» значение null

#php #laravel

Вопрос:

В настоящее время я создаю систему регистрации (с laravel 8), которая проверяет IP-адрес регистрации пользователя для предотвращения мошенничества, создает новый экземпляр и сохраняет его в базе данных, если связанный IP-адрес не имеет предыдущей записи в реестре. Однако после отправки регистрационной формы на сервер я столкнулся со следующей ошибкой.

 Attempt to assign property "referer_uid" on null
 

Я могу успешно запустить код, если закомментирую либо $ip_exists, либо $log_referral. Однако они не могут сосуществовать одновременно.

RegisterController.php

 <?php
use AppModelsLogReferral;
//...
    $user = User::create([
        'name' => $data['name'],
        'safe_code' => Hash::make($data['safe_code']),
        'register_ip' =>$ip,
        'last_login_ip' =>$ip,
        'referral_code' => Str::random(12),
        'password' => Hash::make($data['password']),
    ]);
//...
$referer_info = User::where('referral_code',$referer)->first();
$ip_exists = LogReferral::where('ip',$ip)->first();
if(!$ip_exists){
    $log_referral = new LogReferral;
    $log_referral->referer_uid = $referer_info->id;
    $log_referral->referee_uid = $user->id;
    $log_referral->reward = $coin_reward;
    $log_referral->ip = $ip;
    $log_referral->result = "1";
    $log_referral->save();
}
 

миграция log_referrals

 Schema::create('log_referrals', function (Blueprint $table) {
    $table->id();
    $table->string('referer_uid');
    $table->integer('referee_uid');
    $table->integer('reward');
    $table->string('result');
    $table->string('ip');
    $table->timestamps();
});
 

Обновить

Если запись существует в $ip_exists, программа завершит работу с указанной выше ошибкой. Однако, если $ip_exists не может найти какую-либо запись, все работает нормально.

Комментарии:

1. $user->идентификатор; я думаю, это неправильно,. $referer_info содержит данные пользователя

2. также $log_referral->ip = $ip; здесь в таблице log_referrals отсутствует столбец ip при миграции

3. Спасибо за напоминание @JohnLobo ! Я обновил код. Я могу успешно вставить в базу данных, если закомментирую строку $ip_exists.

4. Если вы закомментируете все внутри условного после $log_referral = new LogReferral; , это приведет к ошибке?