Laravel 正在尝试获取非对象的属性“id”

Laravel 正在尝试获取非对象的属性“id”,laravel,laravel-5,eloquent,relational-database,Laravel,Laravel 5,Eloquent,Relational Database,我想显示张贴在墙上的用户的id,但它显示了错误。我正在学习laravel中的关系。 帖子属于1个用户。 1用户可以有很多帖子。 谢谢 后模型 class Post extends Model { public function users(){ return $this->belongsTo('\App\User'); } 岗位控制员 class PostsController extends Controller { public functio

我想显示张贴在墙上的用户的id,但它显示了错误。我正在学习laravel中的关系。 帖子属于1个用户。 1用户可以有很多帖子。 谢谢

后模型

class Post extends Model
{
        public function users(){
        return $this->belongsTo('\App\User');
}
岗位控制员

class PostsController extends Controller
{
    public function index()
    {
        $p = \App\Post::all();
        return view('posts.index',compact('p'));
    }
}
帖子\索引

<?php 
    foreach ($p as  $value) {
    echo $value->title." ".$value->body." posted by ".$value->users->id." 
    <br>";}
 ?>
应该是

答:$value->users->id

或者像这样更新控制器:


B:$p=\App\Post::with'users'->get

首先:您的帖子只有一个用户作为writerauthor,所以将其设置为user而不是users

将关系添加到用户模型公共函数posts{关系为hasMany

使用eagle load$posts=Post::with'user'->Get获取数据

这样,您就可以在blade中获得您的作者信息,如:

@foreach($posts as $post)
{{$post->title}} <br>
{{$post->user->name}}
@endforeach

希望有帮助。

你可以添加$value->users并观察它!

一个给定错误B不起作用,给出相同的例外情况你确定你试图显示的帖子在你的数据库中确实有一个链接用户吗?你能确认你的帖子表有一个user\u id字段吗?你能尝试在没有视图的情况下使用php artisan tinker进行测试吗ike:php artisan tinker;$post=\App\post::first;$post->users->id;如果$post->users上的值为null,这意味着Eloquent无法找到id为2的用户。我非常确定您的post类上的users方法是正确的,并且应该正确链接到用户,而不是缺少结尾}。我很想看到那个数据库的转储。仅仅通过让方法用户对用户,问题就解决了,但我无法理解它背后的逻辑,我的意思是函数名可以是任何函数名,如果你得到一组数据,你&39;如果你有宾语,我就用复数;我用单数。例如,用户有许多帖子,所以函数是posts hasMany,post有一个用户,然后函数是user belongsTo。
@foreach($posts as $post)
{{$post->title}} <br>
{{$post->user->name}}
@endforeach