如何在Sequel ORM for Ruby中进行多个连接

时间:2016-07-26 01:49:12

标签: sql ruby sequel

我正在使用续集ORM。我有三个表,'类别','商家','产品'。

以下是模型:

class Product < Sequel::Model
    many_to_one :merchants
end

class Merchant < Sequel::Model
    many_to_one :category
end

我需要获取特定类别的产品。我该怎么做呢?

如果我需要特定商家的产品,我可以很容易地做到:

@merchant = Merchant.first(:id=>1)
@merchant.products.each do |s|
...
end

但是,如果该类别与商家和商家相关,则如何将产品纳入类别?

2 个答案:

答案 0 :(得分:3)

这是一种方式:

Product.
  select_all(:products).
  association_join(:merchant).
  where(:category_id=>category.id)

但是添加关联可能最简单:

Category.many_to_many :products,
  :join_table=>:merchants,
  :right_key=>:id,
  :right_primary_key=>:merchant_id

category.products

答案 1 :(得分:0)

获取一个类别,遍历属于该类别的商家,并将此商家的产品推送/附加到阵列:

products = []
category = Category.find(:id=>1)
category.merchants.each do |m|
  p<<m.products
end