试图获得非对象Eloquent Relationship的属性

时间:2016-08-25 01:05:57

标签: php laravel compiler-errors

我在 App \ Post.php 文件中写了这段代码。

public function user(){

    return $this->belongsTo('App\User');

}

我已将其写入 routes.php

Route::get('/{id}', function($id){

    return Post::find($id)->user->name;

});

当我去测试代码时,我收到以下错误。

  

尝试获取非对象的属性

2 个答案:

答案 0 :(得分:1)

嗯。让我们重新定义您的模型

在App \ User.php中

public function posts(){
    return $this->hasMany(Post::class);
}

在App \ Post.php中

public function user(){
    return $this->belongsTo(User::class);
}

您可以互相访问,例如

//Get User from Post
$user = Post::find($id)->user;

//Get Post collection from User
$posts = User::find($id)->posts

答案 1 :(得分:1)

请检查您的结果和代码:

  1. 你的Post :: find($ id);返回值还是空?如果它是空的,那么你需要检查你的表可能是id不存在
  2. 检查表格中的每个ID,并按照以下方式优化您的模型:
  3. 应用\ post.php中

    public function user()
        {
          return $this->belongsTo('App\User', 'the_foreign_key_Post_in_users', 'primary_key_in_Post');
        }
    

    应用\ user.php的

    public function post(){
        return $this->hasMany('App\Post','the_foreign_key_POst_in_users');
      }