У меня есть объект User, который имеет отношение один ко многим с объектом Profile. Мне требуются поля объекта профиля для динамического отображения его переменных на веб-странице. т.е. сколько «постов», их «описание» и т. д. c. Я столкнулся с некоторыми проблемами, связанными с этим поиском, несколько дней назад. Естественно, думая, что это была внешняя ошибка, я попытался добавить теги '@' - однако, это, казалось, только подавляло помеченные ошибки и не решало проблему. Поэтому я решил проверить, если я использовал свою страницу редактирования профиля, заполнил поля и «сохранил», если на внутреннем торце поля были обновлены: это не сработало, и Тинкер пометил прикрепленную ошибку.
Dynami c вызов атрибутов пользовательских объектов в html:
<input id="title"
type="text"
class="form-control
@error('title') is-invalid
@enderror"
name="title"
value="{{ old('title') ?? @$user->profile->title}}" required
autocomplete="title" autofocus>
Функция обновления в ProfilesController (обратите внимание, что «профиль» свойство выделено желтым цветом)
public function update(User $user)
{$data = request()->validate([
'title' => 'required',
'description' => 'required',
'url' => 'url',
/*'image' => '', */
]);
$user->profile->update($data);
return redirect("/profile/{$user->id}");
}
Обратите внимание: ошибка, помеченная как это 'Call to a member function update() on null'
Метод профиля в классе пользователя:
public function profile()
{return $this->hasOne(Profile::class);}
Метод пользователя в классе профиля:
public function user()
{return $this->belongsTo(User::class);}
и, наконец, ошибка помечается при использовании Tinkers all ();
>>> Profile::all();
[!] Aliasing 'Profile' to 'App\Profile' for this Tinker session.
=> Illuminate\Database\Eloquent\Collection {#3080
all: [],
}
>>>
Удалена ошибка тегов '@':
Facade\Ignition\Exceptions\ViewException
Trying to get property 'title' of non-object (View: C:\Users\(PCNAMEfoo)\(PROJECTNAMEfoo)\resources\views\profiles\index.blade.php)
Редактировать 1: Я подумал, что было бы полезно показать, что произойдет, если я удалю теги '@' и перейду на страницу указателя (в разделе ' Dynami c вызов атрибутов пользовательских объектов в html').
Редактировать 2: добавить дополнительную информацию ред.
Это мой первый пост, поэтому я надеюсь, что он был отформатирован правильно. Спасибо за ЛЮБОЙ уровень ввода.