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);