2014-12-04 166 views
0

很多搜​​索我無法找到一個真正解決我的「問題」後,如果有任何一個人如何能幫助我,我'一切聽hasManyThrough關係的雄辯laravel 4

...

我有樹模型,郵政,用戶和簡介

Post belongsTo user – user hasMany posts == One –to-Many relation 
Profile belongsTo user – user hasOne profile == One-to-One relation 

數據庫結構

User 

---- id : primary key 
---- email : string 
---- name : string 

...

Profile 

---- id : primary key 
---- user_id : foreign key 
---- biography : text 
---- facebook : strings 

...

Post 

---- id : primary key 
---- user_id : foreign key 
---- title : string 
---- slug : string 
---- body : text 

...

用戶模型

class User extends Eloquent { 
    public function posts(){ 
     return $this->hasMany('Post'); 
    } 
    public function profile(){ 
     return $this->hasOne('Profile'); 
    } 
} 

剖面模型

class Profile extends \Eloquent { 
    public function user(){ 
     return $this->hasOne('User'); 
    } 
} 

Post模型

class Post extends \Eloquent { 
    public function user(){ 
     return $this->belongsTo('User'); 
    } 
} 

如何我可以通過帖子

我希望我很清楚的得到配置文件表中的用戶個人簡歷(或任何其他屬性)

回答

0

有中沒有hasManyThrough你建立。

首先修復這種關係:

//Profile  
public function user(){ 
    return $this->belongsTo('User'); 
} 

然後簡單:

$post->user->profile->biography; 

$user->profile->biography; 

有過帖子沒有規範的數據,因爲這兩個postprofile屬於用戶。


還有另一種方式來鏈接postsprofiles表:

// Post model 
public function profile() 
{ 
    return $this->hasOne('Profile', 'user_id', 'user_id'); 
} 

// Profile model 
public function posts() 
{ 
    return $this->hasMany('Post', 'user_id', 'user_id'); 
} 

然後:

$post->profile->biography; 

$profile->posts; // collection of Post models 

這樣你通過不取的User模式保存一個查詢。

+0

謝謝@Jarek我明白了:-) – chebaby 2014-12-08 21:55:57