Создание объекта по умолчанию из пустого значения laravel 5.7
У меня есть ошибка в моей форме администратора пользователя обновления, где я хочу обновить профиль, соответствующий Пользователю, если у него есть профиль. Но он выдает эту ошибку:
Создание объекта по умолчанию из пустого значения
Я установил отношения в своей модели между Пользователем и профилем Profile::where('id', $user->profile_id)->first();
но когда я dd
, это всегда null, даже если есть соответствующий профиль.
Пользователь.РНР
public function profile()
{
return $this->hasOne('App\Profile', 'user_id', 'id');
}
Профиль.РНР
public function user()
{
return $this->belongsTo('App\User');
}
ошибка функции в
public function update(Request $request, User $user)
{
if(\Auth::check()) {
if(\Auth::user()->type == 'admin') {
$validated = $request->validate([
'name' => 'required',
'email' => 'required|email',
'password' => 'confirmed'
]);
if(!empty($validated['password'])){
if(!$user->profile){
//Has no profile
$user->name = $validated['name'];
$user->email = $validated['email'];
$user->password = bcrypt($validated['password']);
$user->update();
} else {
//Has profile
$profile = Profile::where('id', $user->profile_id)->first();
$profile->username = $validated['name'];
$profile->email = $validated['email'];
$profile->update();
$user->name = $validated['name'];
$user->email = $validated['email'];
$user->password = bcrypt($validated['password']);
$user->update();
}
} else {
if(!$user->profile){
//Has no profile
$user->name = $validated['name'];
$user->email = $validated['email'];
$user->update();
} else {
//Has profile
$profile = Profile::where('id', $user->profile_id)->first();
$profile->username = $validated['name'];
$profile->email = $validated['email'];
$profile->update();
$user->name = $validated['name'];
$user->email = $validated['email'];
$user->update();
}
}
}
}
}
на этих линиях $profile = Profile::where('id', $user->profile_id)->first();
У вопроса есть решение - Посмотреть?
Ответы - Создание объекта по умолчанию из пустого значения laravel 5.7 / Creating default object from empty value laravel 5.7
Является ответом!


27.02.2019 07:38:11
Вы можете просто использовать свое отношение, а также сжимать логику как :
$user->name = $validated['name'];
$user->email = $validated['email'];
if(!empty($validated['password'])){
$user->password = bcrypt($validated['password']);
$profile = $user->profile;
$profile->username = $validated['name'];
$profile->email = $validated['email'];
$profile->save();
}
$user->save();
Помочь в развитии проекта: