Laravel 4 正确的关系
数据库中有四个表:组、专业、课程、组课程。它的结构是:Laravel 4 正确的关系,laravel-4,eloquent,relationship,Laravel 4,Eloquent,Relationship,数据库中有四个表:组、专业、课程、组课程。它的结构是: 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 El
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 - Eloquent model
name - string
lessons - collection of Lesson models of Group Specialty
date - date from group_lesson table
我尝试过不同的关系和组合,但都不管用。请帮助我编写正确的关系。您可以使用即时加载通过关系访问关系数据,甚至可以进一步链接关系。根据经验,如果您可以通过关系绘制从一个模型到另一个模型的路径,则可以使用链接的急加载来急加载该模型的所有相关和关系数据 例如
$speciality_group = Speciality::with('group','lessons')->find($id);
即使您只得到专业模型的一个实例,但相关数据也有很多,这意味着有多条记录。您需要使用foreach循环遍历这些记录以访问它们的相关数据,或者在初始查询中添加额外的闭包以仅加载单个相关模型
foreach($speciality_group->group as $group)
{
echo $group->name;
}
对于要显示相关信息的两个实例,您都需要这样做。您可以使用即时加载通过关系访问关系数据,甚至可以进一步链接关系。根据经验,如果您可以通过关系绘制从一个模型到另一个模型的路径,则可以使用链接的急加载来急加载该模型的所有相关和关系数据 例如
$speciality_group = Speciality::with('group','lessons')->find($id);
即使您只得到专业模型的一个实例,但相关数据也有很多,这意味着有多条记录。您需要使用foreach循环遍历这些记录以访问它们的相关数据,或者在初始查询中添加额外的闭包以仅加载单个相关模型
foreach($speciality_group->group as $group)
{
echo $group->name;
}
对于要显示相关信息的两种情况,您都需要这样做。我知道这一点。但我需要这一个工作:Group::with(['lessons')->find($id);我知道。但我需要这一个工作:Group::with(['lessons')->find($id);