我正在使用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);
答案 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);
希望它有所帮助。 (虽未测试)