我和父母及其子女有一个安排。孩子可以有多个父母,系统可以为每个孩子分配多条消息。每个家长也可以有多个孩子。
我已经有了一个用户实例:$ parent。现在我想收到属于这位父母孩子的所有帖子。 Laravel的“有许多通过”并不适用于多对多的关系。
目前我用自定义方法解决了这个问题,但我正在寻找解决此问题的更简洁方法。
这是我的设置:
用户(家长):
class User extends Eloquent
{
public function children()
{
return $this->belongsToMany('Child', 'parents_children', 'user_id');
}
}
儿童:
class Child extends Eloquent
{
public function parents()
{
return $this->belongsToMany('User', 'parents_children', 'child_id');
}
public function posts()
{
return $this->hasMany('Posts', 'ChildPost');
}
}
帖子
class ChildPost extends Eloquent
{
public function child()
{
return $this->belongsToMany('Child');
}
}
答案 0 :(得分:0)
在这种情况下没有本机关系。
我创建了HasManyThrough
关系,并支持BelongsToMany
:Repository on GitHub
安装后,您可以像这样使用它:
class User extends Model {
use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
public function childPosts() {
return $this->hasManyDeep(ChildPost::class, ['parents_children', Child::class]);
}
}