我在数据库中有四个表:组,专业,课程,group_lesson。它的结构:
groups
id
specialty_id
name
specialties
id
name
lessons
id
specialty_id
group_lesson (UNIQUE INDEX lesson_id, group_id)
lesson_id
group_id
date
我的模特现在看起来像这样:
class Group extends Eloquent {
public function specialty() {
return $this->belongsTo('Specialty');
}
}
class Lesson extends Eloquent {
public function specialty() {
return $this->belongsTo('Specialty');
}
}
class Specialty extends Eloquent {
public function lessons() {
return $this->hasMany('Lesson');
}
public function groups() {
return $this->hasMany('Group');
}
}
我需要在Group模型中获得其他字段
Group - Eloquent model
name - string
lessons - collection of Lesson models of Group Specialty
date - date from group_lesson table
我尝试过不同的关系和组合,但它并不起作用。请帮我写出正确的关系。
答案 0 :(得分:0)
您可以使用预先加载来通过关系访问关系数据,甚至可以进一步链接关系。根据经验,如果您可以通过关系绘制从1个模型到另一个模型的路径,则可以使用链式切换加载来加载所有相关和关系数据。
作为一个例子
$speciality_group = Speciality::with('group','lessons')->find($id);
即使您只获得专业模型的单个实例,相关数据也是hasMany,意味着多个记录。您需要使用foreach循环遍历这些记录以访问它们的相关数据,或者在初始查询中添加其他闭包以仅加载单个相关模型。
foreach($speciality_group->group as $group)
{
echo $group->name;
}
您需要为要显示相关信息的两个实例执行此操作。