Php 试求非对象雄辩关系的性质

Php 试求非对象雄辩关系的性质,php,laravel,compiler-errors,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; }); public function posts(){ return $this-&g

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

public function user(){

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

}
我在routes.php中编写了它

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

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

});
public function posts(){
    return $this->hasMany(Post::class);
}
public function user(){
    return $this->belongsTo(User::class);
}
public function user()
    {
      return $this->belongsTo('App\User', 'the_foreign_key_Post_in_users', 'primary_key_in_Post');
    }
public function post(){
    return $this->hasMany('App\Post','the_foreign_key_POst_in_users');
  }
当我去测试代码时,我得到了以下错误

正在尝试获取非对象的属性


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

In-App\User.php

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

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

});
public function posts(){
    return $this->hasMany(Post::class);
}
public function user(){
    return $this->belongsTo(User::class);
}
public function user()
    {
      return $this->belongsTo('App\User', 'the_foreign_key_Post_in_users', 'primary_key_in_Post');
    }
public function post(){
    return $this->hasMany('App\Post','the_foreign_key_POst_in_users');
  }
In-App\Post.php

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

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

});
public function posts(){
    return $this->hasMany(Post::class);
}
public function user(){
    return $this->belongsTo(User::class);
}
public function user()
    {
      return $this->belongsTo('App\User', 'the_foreign_key_Post_in_users', 'primary_key_in_Post');
    }
public function post(){
    return $this->hasMany('App\Post','the_foreign_key_POst_in_users');
  }
这样您就可以像

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

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

请检查您的结果和代码,如下所示:

  • 您的Post::查找($id);返回值还是空?如果它是空的,那么您需要检查您的表,可能该id不存在
  • 检查表中的每个id,并按如下方式优化模型:
  • App\Post.php

    Route::get('/{id}', function($id){
    
        return Post::find($id)->user->name;
    
    });
    
    public function posts(){
        return $this->hasMany(Post::class);
    }
    
    public function user(){
        return $this->belongsTo(User::class);
    }
    
    public function user()
        {
          return $this->belongsTo('App\User', 'the_foreign_key_Post_in_users', 'primary_key_in_Post');
        }
    
    public function post(){
        return $this->hasMany('App\Post','the_foreign_key_POst_in_users');
      }
    
    App\User.php

    Route::get('/{id}', function($id){
    
        return Post::find($id)->user->name;
    
    });
    
    public function posts(){
        return $this->hasMany(Post::class);
    }
    
    public function user(){
        return $this->belongsTo(User::class);
    }
    
    public function user()
        {
          return $this->belongsTo('App\User', 'the_foreign_key_Post_in_users', 'primary_key_in_Post');
        }
    
    public function post(){
        return $this->hasMany('App\Post','the_foreign_key_POst_in_users');
      }
    

    Post::find($id)
    Post::find($id)->用户
    不是object@Scuzzy我怎样才能使它成为一个对象呢?这取决于
    Post::find($id)
    返回的是什么,它实际上是在查找什么,还是返回布尔值false等等?