Почему я получаю «Попытка получить свойство 'username' не-объекта" при попытке получить доступ к "$ comment-> users-> username"? - PullRequest
0 голосов
/ 19 декабря 2018

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

Мои таблицы:

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 ($ комментарии), я вижу:

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

Я не уверен, почему он нулевой.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

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

@foreach($comments as $comment)
    <p>{{ $comment->comment }}</p>
    <p>{{ $comment->users["username"] }}</p>
@endforeach
0 голосов
/ 19 декабря 2018

Попробуйте это

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...