试图获得 属性 'id' 的非对象

Trying to get property 'id' of non-object

我想显示 post 在墙上发帖的用户的 ID,但它说 error.I 正在学习 laravel 中的关系。 Post 属于 1 个用户。 1 个用户可以有多个 post。 谢谢。

Post 型号

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

post 控制器

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

posts\index

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

应该是

答:$value->users()->id

或像这样更新您的控制器:

乙:$p = \App\Post::with('users')->get();

首先:您的 post 只有 1 个用户作为作者(作者),所以将其设为 user() 而不是 users()

  1. 添加关系到用户模型public function posts() {关系是hasMany

  2. 使用 eagle load 获取数据 $posts = Post::with('user')->get();

通过这种方式,您可以在 blade 中获得您的作者信息,例如:

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

希望对您有所帮助。

您可以 dd($value->users) 并观看它!