【发布时间】:2014-11-07 10:30:46
【问题描述】:
兄弟姐妹的关系是多对多的自我关系。所以,对于多对多自我关系,我们可以在模型中定义两个函数:
public function siblings()
{
return $this->belongsToMany('Student', 'student_sibling', 'student_id', 'sibling_id');
}
public function siblingOf()
{
return $this->belongsToMany('Student', 'student_sibling', 'sibling_id', 'student_id');
}
第一个返回学生的兄弟姐妹。反之亦然,对于兄弟姐妹也是如此。因此,第二个返回学生是兄弟姐妹的学生。
因此,我们可以合并这两个集合以获取作为学生兄弟姐妹的学生列表。这是我在控制器方法中的代码:
$siblingOf = $student->siblingOf;
$siblings = $student->siblings;
$siblings = $siblings->merge($siblingOf);
但还有更多。兄弟姐妹关系不同于朋友关系,是一种连锁关系。这意味着,如果 X 是 Y 的兄弟,Y 是 Z 的兄弟,则 Z 是 X 的兄弟。
那么,如何获取一个学生的兄弟姐妹的所有学生的集合?
【问题讨论】:
-
所以更像是
relative而不是sibling,对吧?你希望它有多深?请注意,它可能会变成each student is everyone else's relative in a way
标签: laravel model eloquent relationships