dpwu16132 2015-05-03 17:40
浏览 120

在带有函数的子查询中使用eloquent模型属性

My question may be confuse because I've started learning Laravel.

Can I use eloquent model property in subquery of with() function?

I have classes, students, and grades tables. I wish to get

$classes = [{id:1, name:'maths', students:[{id:2, name: john,
grade:B},{id:1, name: Mac, grade:C}]}, {id:2, name:'physics',
students:[{id:2, name: john, grade:null},{id:1, name: Mac,
grade:null}]}]

for example:

        $classes = Class::with(['students' => function($query){ 
        ->leftJoin('grades', 'grades.student_id', '=', 'students.id')
        }])->get()->toJSON();

This query doesn't select correct grades of related classes. I wish to use class::id = grades.class_id in join condition.

I use leftJoin because some class may not have released its grade.

  • 写回答

2条回答 默认 最新

  • drd94483 2015-05-03 18:04
    关注

    You need to do it this way:

     $classes = Class::with(['students' => function($query){ 
            ->leftJoin('grades', function($join) {
                 $join->on('grades.student_id', '=', 'students.id');
                 $join->on('grades.class_id', '=', 'class.id');
              })
            }])->get()->toJSON();
    
    评论

报告相同问题?