经过大量的搜索,我无法找到真正的解决方案来解决我的“问题”,所以如果有任何人可以帮助我,我都在聆听
...
我有树模型,帖子,用户和个人资料
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');
}
}
发布模型
class Post extends \Eloquent {
public function user(){
return $this->belongsTo('User');
}
}
如何我可以通过帖子在个人资料表上获取用户传记(或任何其他属性)
我希望我足够清楚
答案 0 :(得分:0)
您的设置中没有hasManyThrough
。
首先修复这种关系:
//Profile
public function user(){
return $this->belongsTo('User');
}
然后简单地说:
$post->user->profile->biography;
$user->profile->biography;
帖子中没有个人资料数据,因为post
和profile
都属于用户。
还有另一种方法可以链接posts
和profiles
表:
// 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
模型来保存一个查询。