【发布时间】:2014-11-25 20:34:06
【问题描述】:
我在使用 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)、旅行(id、...)、用户(id、...)
【问题讨论】:
-
我认为
users.*正在覆盖id中来自trips.*的列,是否有理由在一个查询中一次加载所有内容而不是两个单独的急切加载的查询? -
嗯,没有任何特殊原因。您是否建议将查询分成两部分?第一个必须有行程用户加入的部分,不是吗?
标签: ruby-on-rails join activerecord rails-activerecord