当您想使用别名将一个表与其他表联接两次时,如何使用 laravel 雄辩关系



我有两个表行程和trip_stops

行程表结构:

ID - 整数,PK departure_date arrival_date created_at updated_at

trip_stops结构

ID - 整数,PK trip_id - FK stop_name sequence_number

现在我想根据用户提供的输入连接这两个表,我已经使用原始SQL查询完成了此操作,但是我想知道是否可以通过使用laravel雄辩关系来完成此操作。

原始 SQL:

select * from trips inner join trip_stops departure_city on trips.id = departure_city.trip_id inner join trip_stops arrival_cities on trips.id=arrival_cities.trip_id where departure_city.stop_name='Dehradun' and arrival_cities.stop_name='Delhi' and departure_city.sequence_number < arrival_cities.sequence_number 
Trip::join('trip_stops as departure_city', 'departure_city.trip_id', '=', 'trips.id')
->join('trip_stops as arrival_cities', 'arrival_cities.trip_id', '=', 'trips.id')
->where('departure_city.stop_name', 'Dehradun')
->where('arrival_cities.stop_name', 'Delhi')
->whereRaw('departure_city.sequence_number', '<', 'arrival_cities.sequence_number');

或者改用数据库,

DB::table('trips')

编辑:在比较序列号时,我们必须使用 whereRaw 而不是 where,因为使用 where 会将另一个参数作为值

最新更新