Laravel:执行使用多个表的位置

时间:2017-03-29 13:57:08

标签: php laravel eloquent

我正在使用Laravel提供的Eloquent ORM,我想在两个表上执行。我有3个型号

  • 乘员
  • 工作

占用者表有一个名为pocket_money的列,作业表有一个名为income的列。占用者可以有多个工作,所以我想选择他们的收入+ pocket_money总和大于X的所有占用者。所以原始查询将是

select occupants.* 
from occupants o, jobs j 
where o.pocket_money + sum(j.income) > X
and o.occupant_id = j.occupant_id

这是我目前所拥有的,但它不起作用,因为占用者表在执行查询时不可用。

$occupants = House::with(["occupants", "occupants.jobs" => function($query) {
    $query->where('occupants.pocket_money + sum(jobs.income)', '>', 1000);
}])->find($house_id);

1 个答案:

答案 0 :(得分:0)

试试这个

$occupants = House::with(["occupants.jobs", "occupants" => function($query) {
     $query->leftJoin('jobs','jobs.occupant_id','=','occupants.id')
           ->select("occupants.*")
           ->whereRaw('occupants.pocket_money + sum(jobs.income) > 1000')
 }])->find($house_id);

希望它有所帮助。 (虽未测试)