2016-08-25 34 views
2

我已經在App \ Post.php文件中寫下這段代碼。試圖獲得非客體雄辯關係的屬性

public function user(){ 

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

} 

我寫它的routes.php文件

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

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

}); 

我收到以下錯誤,當我去考裏面的代碼。

試圖讓非對象

+0

是'郵政::發現($ ID)'或'Post :: find($ id) - > user'不是一個對象 – Scuzzy

+0

@Scuzzy我怎樣才能使它成爲一個對象? –

+0

這取決於什麼'Post :: find($ id)'正在返回,它實際上是在找東西還是在返回布爾值false等? – Scuzzy

回答

1

嗯財產。讓我們重新定義你的模型

在應用程序\ user.php的

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

在應用程序\ 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. 你的發帖:: find($ id);返回一個值還是空的?如果它是空的,那麼你需要檢查你的表可能是ID是不存在的
  2. 檢查表中的每個ID在桌子上,完善模型是這樣的:

應用程序\ 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'); 
    }