【发布时间】:2016-04-19 03:17:20
【问题描述】:
我有两个 Eloquent 模型,Camp 和 Level。
Camp 有一个 start 和一个 end 日期字段。
Level 有一个 min_age 和一个 max_age 整数字段。
一个Level 与许多Camps 相关
使用查询范围和日期参数$dob,我想获取Camps 的集合,其中$dob 出生的人的年龄将在@ 上的min_age 和max_age 之间987654336@日期。
换句话说(一些伪代码):
select * from Camps
join Levels on Camps.level_id = Levels.id
where min_age <= (start - $dob)->toYears <= max_age
这样的事情是否可能使用查询范围,并且可能不使用任何原始查询?也许是这样?
public function scopeAgeAppropriate($query, $dob) {
return $query->join('Levels', 'Camps.level_id', '=' ,'Levels.id')
->where('min_age', '<=', start->diffInYears($dob))
->where('max_age', '>=', start->diffInYears($dob));
}
【问题讨论】: