2014-11-03 81 views
0

我想从三个表中检索数据:课程,能力和competency_standards。以下查询几乎可以工作,但不会返回关联的competency_standards表数据。Laravel:嵌套“with()”函数

$coursesAndComps = Course::with(
     array('competencies' => function($query) 
     { 
      Competency::with('competency_standards'); 
     }) 
    )->get()->toArray(); 

competencies表被链接到courses表(competencies.course_id = course.id)和competency_standards表链接到competencies表(competency_standards.competencey_id = competency.id)。

数组返回这个样子的:

Array 
(
[0] => Array 
    (
     [id] => 1 
     [name] => the first course 
     [competencies] => Array 
     (
      [0] => Array 
      (
       [id] => 9 
       [course_id] => 1 
       [name] => first course comp 1 
      ) 

      [1] => Array 
      (
       [id] => 10 
       [course_id] => 1 
       [name] => first course comp 2 
      ) 

     ) 
    ) 

) 

competencies阵列内,我希望能找到另一个数组称为competency_standards这样的:

...

[0] => Array 
    (
     [id] => 9 
     [course_id] => 1 
     [name] => first course comp 1 
     [competency_standards] => Array 
      (
       [0] => Array 
       (
        [id] => 22 
        [competency_id] => 9 
        [name] => standard foo 
       ) 
       [1] => Array 
       (
        [id] => 23 
        [competency_id] => 9 
        [name] => standard bar 
       ) 
      ) 
    ) 

...

这可能吗?我是否以这种错误的方式去做?

回答

3

应该可以使用:

$coursesAndComps = Course::with('competencies', 'competencies.standards') 
        ->get()->toArray(); 

当然你需要定义standards关系Competency模型Standard

+1

链接Competency你甚至都不需要指定'competencies'首先,只有'('competencies.standards')'就足够了。 – 2014-11-03 20:36:31

+0

@JarekTkaczyk很高兴知道 – 2014-11-03 20:50:57