【问题标题】:Complex SQL to ActiveRecord复杂的 SQL 到 ActiveRecord
【发布时间】:2018-02-02 03:28:32
【问题描述】:

我对 Active Record 中的包含哈希和连接感到很困惑,我想知道如何在 Rails 上进行这种查询

SELECT 
p.name,
o.id AS order_id,
op.id AS order_product_id,
op.name
FROM orders o 
INNER JOIN order_products AS op
ON op.order_id = o.id 
INNER JOIN product_providers AS pp
ON pp.id = op.product_provider_id 
INNER JOIN providers as p 
ON p.id = pp.provider_id 
WHERE o.id = 1

【问题讨论】:

  • 你能解释一下你的问题吗?
  • 当然,我想以某种方式将此 sql 查询转换为 activerecord 查询,例如 Order.where(id: params[:id]).joins(example: {[:e1, e2]}, e2])

标签: mysql sql ruby-on-rails ruby activerecord


【解决方案1】:

我认为你有以下关系:

--一个订单有很多order_products,

--一个order_product有一个(belongs_to)product_provider,

--一个product_provider 有一个(belongs_to)提供者

如果这些关系是正确的,那么你会想要这样的东西:

Order.joins(order_products: {product_provider: :provider})
     .where(orders: {id: 1})
     .select('orders.id AS order_id, order_products.id AS order_products_id, order_products.name')

虽然你没有从product_providersproviders 中选择任何东西,所以不确定你为什么要加入他们。

【讨论】:

    猜你喜欢
    • 2021-11-06
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多