Laravel — Как получить доступ к связанному объекту другие отношения

#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?