Вызов функции-заполнителя () для не-объекта

Попытка добавить информацию в пустой profile и перенаправить обратно.

 $user = User::whereUsername($username)->firstOrFail(); // Selects correct user $input = Input::all(); // a dd($input) at this point confirms input present $this->profileForm->validate($input); // Passes $user->profile->fill($input)->save(); return Redirect::route('profile.edit', $user->username); 

Если $user->profile имеет значение null это дает ошибку: Call to a member function fill() on a non-object . Я попытался исправить это с помощью:

 $user = User::whereUsername($username)->firstOrFail(); // Selects correct user $input = Input::all(); // a dd($input) at this point confirms input present $this->profileForm->validate($input); // Passes if ($user->profile == null) { $user->profile = new Profile; } $user->profile->fill($input)->save(); return Redirect::route('profile.edit', $user->username); 

Но в этом случае он перенаправляется без добавления сведений о профиле ( $user->profile до сих пор остается null ).

Если в $ user-> profile уже есть информация, эта проблема не возникает, и код работает нормально.

Related of "Вызов функции-заполнителя () для не-объекта"

Вы можете сделать это следующим образом:

 if (count($user->profile)) { $user->profile->fill($input)->save(); } else { $profile = Profile::create($input); $user->profile()->save($profile); }