根据两个站点查询班次,用 Eloquent 可以实现吗
有三张表,1.班次表 2.站点表 3.班次和站点的中间表
schedule
id - integer
name - string
point
id - integer
name - string
schedule_point
schedule_id - integer
point_id - integer
sort - integer
中间表sort字段排序,区分站点先后顺序
现在要做查询,前端传start_point_id、end_point_id。
start_point中间表的sort必须小于end_point
用laravel优雅的方式可实现吗?
不优雅的做法:
$a = DB::select('SELECT * FROM schedule WHERE id IN (
SELECT a.schedule_id FROM
( SELECT schedule_id, sort FROM schedule_point WHERE point_id = ? ) AS a,
( SELECT schedule_id, sort FROM schedule_point WHERE point_id = ? ) AS b
WHERE
a.schedule_id = b.schedule_id
AND a.sort < b.sort
)',[140,141]);
推荐文章: