Почему я получаю & quot; пытаюсь получить свойство ‘username’ необъекта & quot; при попытке получить доступ к «$ comment- & gt; users- & gt; username» quot ;?

Я пытаюсь получить имена пользователей, которые разместили комментарии, однако я получаю ошибку «Попытка получить свойство« имя пользователя »необъектного». Я верю, что мои отношения сделаны правильно, но я могу ошибаться.

Мои таблицы:

Table: Users
Columns: id, username, password

Table: Comments
Columns: id, user_id, image_id, comment

Модель комментария:

class Comment extends Model
{
public function users(){
return $this->belongsTo('App\User');
}
}

Модель пользователя:

class User extends Model implements Authenticatable
{
public function comments(){
return $this->hasMany('App\Comment');
}
}

Я получаю комментарии как это:

$comments = Comment::with('users')->where('image_id', $id)->get();

А затем пытаемся перебрать их в представлении так:

@foreach($comments as $comment)
<p>{{ $comment->comment }}</p>
<p>{{ $comment->users->username }}</p>
@endforeach

И когда я dd ($ comments), я вижу:

 #relations: array:1 [▼
"users" => null
]

Я не уверен, почему это ноль, хотя.

1

Решение

Попробуй это

@foreach($comments as $comment)
<p>{{ $comment->comment }}</p>
<p>{{ !empty($comment->users->username) ? $comment->users->username : '' }}</p>
@endforeach

Также я предлагаю вам изменить имя отношения users в user

class Comment extends Model
{
public function user(){
return $this->belongsTo('App\User');
}
}

Получить комментарии

$comments = Comment::with('user')->where('image_id', $id)->get();

И ввиду

@foreach($comments as $comment)
<p>{{ $comment->comment }}</p>
@if(!empty($comment->user))
<p>{{ $comment->user->username }}</p>
@endif
@endforeach
1

Другие решения

попробуйте так:

@foreach($comments as $comment)
<p>{{ $comment->comment }}</p>
<p>{{ $comment->users["username"] }}</p>
@endforeach
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector