【问题标题】:Chain eager loading链式急切加载
【发布时间】:2014-07-12 12:17:08
【问题描述】:

我的数据库中有三个表

  1. 项目
  2. 里程碑
  3. 任务

一个项目可以有很多里程碑,一个里程碑可以有很多任务。

有没有一种方法可以使用 eloquent 模型创建一个查询,以在 1 个结果集中获取所有里程碑以及与该里程碑关联的所有任务。我已经设法获得属于我的项目的所有里程碑。

这是我的ProjectsController:

public function getProject($id)
{       
    $project = Project::findOrFail($id)->with('milestones');
    return $project;
}

我在模型中建立了所有关系:

项目模型:

public function milestones(){
    return $this->hasMany('Milestone');
}

里程碑模型:

public function project(){
    return $this->belongsTo('Project');
}

public function tasks(){
    return $this->hasMany('Task');
}

任务模型:

public function milestone(){
    return $this->belongsTo('Milestone');
}

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    您可以在 eager loading

    时指定多个(也可以嵌套)关系
    $project = Project::with(['milestones', 'milestones.tasks'])->findOrFail($id);
    

    让我们修补一下:

    [1] > $id = 1; // 1 [2] > $project = Project::with(['milestones', 'milestones.tasks'])->findOrFail($id)->toArray(); // 大批( // 'id' => 1, // '名称' => 'Project1', // 'created_at' => '2014-07-12 02:57:55', // 'updated_at' => '2014-07-12 02:57:55', // '里程碑' => 数组( // 0 => 数组( // 'id' => 1, // '名称' => '里程碑11', // 'project_id' => 1, // 'created_at' => '2014-07-12 02:58:12', // 'updated_at' => '2014-07-12 02:58:12', // '任务' => 数组( // 0 => 数组( // 'id' => 1, // '名称' => 'Task111', // 'milestone_id' => 1, // 'created_at' => '2014-07-12 02:58:53', // 'updated_at' => '2014-07-12 02:58:53' // ), // 1 => 数组( // 'id' => 2, // '名称' => 'Task112', // 'milestone_id' => 1, // 'created_at' => '2014-07-12 02:59:02', // 'updated_at' => '2014-07-12 02:59:02' // ) // ) // ), // 1 => 数组( // 'id' => 2, // '名称' => '里程碑12', // 'project_id' => 1, // 'created_at' => '2014-07-12 02:58:22', // 'updated_at' => '2014-07-12 02:58:22', // '任务' => 数组( // 0 => 数组( // 'id' => 3, // '名称' => 'Task121', // 'milestone_id' => 2, // 'created_at' => '2014-07-12 02:59:12', // 'updated_at' => '2014-07-12 02:59:12' // ) // ) // ) // ) // )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 2013-04-13
      相关资源
      最近更新 更多