Попытка добавить информацию в пустой 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 уже есть информация, эта проблема не возникает, и код работает нормально.
Вы можете сделать это следующим образом:
if (count($user->profile)) { $user->profile->fill($input)->save(); } else { $profile = Profile::create($input); $user->profile()->save($profile); }