#php #laravel #laravel-5 #eloquent #eloquent-relationship
#php #laravel #laravel-5 #красноречивый #красноречивый-отношения
Вопрос:
У меня есть 3 модели «Категория», «Сообщение» и «Пользователь». Категория имеет множество отношений с Post. И сообщение имеет отношение belongsTo к пользователю.
У меня есть объект категории $cat1
, и я могу получить доступ к его сообщениям (и идентификатору пользователя), на мой взгляд, но я не могу получить доступ к дополнительным пользовательским данным (имя строки)
@foreach ($cat1->posts as $post)
{{ $post->title }}
{{ $post->user()->name }}
@endforeach
Это выдает ошибку
Неопределенное свойство: IlluminateDatabaseEloquentRelationsbelongsTo::$name
Ответ №1:
Вы можете получить к нему доступ следующим образом:
{{ $post->user->name }}
Когда вы вызываете функцию, она запрашивает связь.
Комментарии:
1. Это не работает. Выдает ошибку: попытка получить свойство не-объекта
2. @Badr Можете ли вы показать свой пользовательский метод из своей модели Post?
3.
public function user(){ return $this->belongsTo(User::class); }
вот оно.4. У меня есть другие модели с такими же отношениями, и они работают с использованием вашего синтаксиса, поэтому я, должно быть, пропустил что-то еще, проверяя..
5. @Badr И свойство находится
user_id
в вашей модели Post?