join查询具有\u many::

0g0grzrc  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(109)

目标:我正在尝试设置一个datatable,由ajax datatables支持。为了做到这一点并使给定的列可搜索/排序,我需要在原始查询中提供该列中应该显示的数据
背景:我有类似于下面的activerecord模型设置(只提供重要的部分,我也知道这个设置的部分可以干燥,它不完全是我的应用程序中的设置看起来像什么,它更复杂):

class Invoice < ApplicationRecord
  has_many :order_invoices, inverse_of: :invoice
  has_many :orders, through: :order_invoices
end

class OrderInvoice < ApplicationRecord
  belongs_to :invoice, inverse_of: :order_invoices
  belongs_to :order, polymorphic: true, inverse_of: :order_invoices
end

class RegularOrder < ApplicationRecord
  has_many :order_invoices, as: :order, inverse_of: :order
  has_many :invoices, inverse_of: :orders, through: :order_invoices

  # has "uid" attribute
end

class IrregularOrder < ApplicationRecord
  has_many :order_invoices, as: :order, inverse_of: :order
  has_many :invoices, inverse_of: :orders, through: :order_invoices

  # has "uid" attribute
end

问:我需要写一个查询,在哪里加入这些 has_many: :through 多态对象,从 Invoice 水平,并最终能够选择它的 uid 列。如果没有多态关联,它看起来像:


# Assuming the table name would be "orders"

Invoice.joins(order_invoices: :order).select("invoices.*, orders.uid")

但很明显,多态关联无法使用,因为没有一个表可供我参考。
有没有办法用activerecord进行这样的查询?或者我需要一个纯sql解决方案(我想是的)?这样的查询是什么样子的?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题