Laravel Laravel связи. Массив вместо объекта

admapc

Новичок
$comment->user->email - не работает (Ошибка: не является объекта)
$comment->user['email'] - работает

Но судя по документации и всем примерам я должен получать объект. Не пойму почему так?

PHP:
//Post
public function comments()
    {
        return $this->hasMany('PostComment');
    }
//PostComment
public function user()
    {
        return $this->belongsTo('User');
    }

//PostController
$post = Post::with('user','comments')->find($id);

//View
@foreach($post->comments as $comment)
    {{dd($comment->user)}}
@endforeach
 

AmdY

Пью пиво
Команда форума
так а что отладка выводит $comment->user, что это за объект
 

admapc

Новичок
И при этом для каждого владельца комментария делает отдельный запрос к БД а должен быть один запрос и результат выводится как объект, почему выскакивает ошибка что не объект не понятно.
Код:
 object(User)#421 (20) {
["original":protected]=>
  array(17) {
    ["id"]=>
    int(14)
    ["email"]=>
    string(20) "[email protected]"
    }
}
Явно мелочь упустил но где? Не могу понять
 

флоппик

promotor fidei
Команда форума
Партнер клуба
потому что когда ты делаешь Post::with('user', 'comments') - грузишь связь поста с пользователем, и поста с комментариями, но не грузишь - автора поста комментария.
 

admapc

Новичок
оно само должно подхватывать еще и так пробовал тоже самое
$comments = PostComment::with('User')->where('post_id', $id)->get();
 

admapc

Новичок
Написал User c большой буквы, нужно с маленькой $comments = PostComment::with('User')->where('post_id', $id)->get();

Осталась только проблема с массивом вместо объекта. Почему так получается?

PHP:
$post = Post::with('user')->find($id);

$comments = PostComment::with('user')->where('post_id', $id)->orderBy('id', 'DESC')->paginate(20);

return View::make('posts.show')->with([
            'post'=>$post,
            'comments'=> $comments,
        ]);
 

admapc

Новичок
Неудачно просидировал базу. Несуществующие пользователи и вызывали ошибку:( Всем спс.
 
Сверху