【发布时间】:2017-02-12 21:16:02
【问题描述】:
我有 3 个相互关联的模型。
- 组
- 群组成员
- 群发帖
- GroupPostComment
现在,我也分离了数据库表。
- 群组
- group_members
- group_posts
- group_post_cmets
对于每个成员所属的组,我在 group_members 中插入一个新行。 这里的外键是“group_id”,它与组中的 id 字段有关。 在 group_posts 中,每个发布的帖子都有一个新行。这个容器也是一个 group_id 字段。
我正在努力解决的是 GroupMember 模型。 如何从该 GroupMember 中获取所有帖子的集合,该 GroupMember 在与其相关的一个组中发布了这些帖子?
这是我的模型设置。
组模型
public function category() {
return $this -> belongsTo('App\GroupCategory', 'category_id');
}
public function owner() {
return $this -> hasOne('App\GroupMember', 'group_id') -> where('owner', true);
}
public function mods() {
return $this -> hasMany('App\GroupMember', 'group_id') -> where('mod', true);
}
public function admins() {
return $this -> hasMany('App\GroupMember', 'group_id') -> where('admin', true);
}
public function members() {
return $this -> hasMany('App\GroupMember', 'group_id');
}
public function posts() {
return $this -> hasMany('App\GroupPost', 'group_id');
}
public function comments() {
return $this -> hasMany('App\GroupPostComment', 'group_id');
}
GroupMember 模型
public function group() {
return $this -> belongsTo('App\Group');
}
public function posts() {
return $this -> hasMany('App\GroupPost', 'group_id', 'group_id');
}
public function comments() {
return $this -> hasMany('App\GroupPostComment', 'group_id', 'group_id');
}
public function user() {
return $this -> belongsTo('App\User');
}
GroupPost 模型
public function user() {
return $this -> belongsTo('App\User');
}
public function comments() {
return $this -> hasMany('App\GroupPostComment', 'post_id');
}
public function group() {
return $this -> belongsTo('App\Group');
}
问题在于 GroupMember 模型和 posts() / cmets() 方法。 我的关系有错误,但我看不出我做错了什么。
有人看到我做错了吗?
【问题讨论】:
标签: laravel eloquent relationship