我在使用ActiveRecord解决查询时遇到问题。查询描述为:"返回与代理创建的旅行相关联的路线"
这是我试过的:
trips = Trip.where("agent_id = ? AND is_itinerary", params[:id])
.joins('LEFT JOIN itineraries ON trips.id = itineraries.trip_id LEFT JOIN users ON itineraries.user_id = users.id')
.select('trips.*, itineraries.status, users.*')
结果似乎没问题,但问题是记录的返回ID。它们是重复的,而不是Trip.id看起来像返回的id是User.id。
有人知道如何解决它吗?也许改变默认的分组策略?
表格是:行程(id,trip_id,user_id),Trips(id,...),用户(id,...)
答案 0 :(得分:0)
最后,我可以解决原始查询分离的问题:
trips = Trip.where("agent_id = ? AND is_itinerary", params[:id]).joins('LEFT JOIN itineraries ON trips.id = itineraries.trip_id').select('trips.*, itineraries.status')
trips = trips.joins("LEFT JOIN users ON itineraries.user_id = users.id").select("users.*")
以这种方式执行用户。*属性不会覆盖Trips属性。