根据连接表中的属性查询关联的续集模型

时间:2017-12-12 05:06:35

标签: postgresql sequel

鉴于通过Select * into MyVar from Tab1 Where <Somecondition> limit 14; If Num_of_Records < 14 Then Append Into MyVar Select * from Tab1 Where <Relaxedcondition> limit 14 - Num_of_Records; End If; return Myvar 加入的Sequel::Model商品和商店,我希望根据商家信息的属性找到Listings及其关联的Items

Stores

我可以使用DB.create_table? :items primary_key :id end DB.create_table? :stores primary_key :id end DB.create_table? :listings foreign_key :store_id foreign_key :item_id TrueClass :active, null: true String :name end class Item < Sequel::Model many_to_many :stores, join_table: :listings end class Store < Sequel::Model many_to_many :items, join_table: :listings end class Listing < Sequel::Model end .association_join条款来执行此操作(如下所示),但是(A)我不确定这是否正确(B)它使用来自两个连接表的道具产生结果,并且(C)在结果.where上调用#stores会导致另一个查询。

Item

我的最终目标是Item.association_join(:stores).where(active: true, name: 'Sears').eager(:stores).first() 数据集,它会急切地加载Item

最好的方法是什么?谢谢!

1 个答案:

答案 0 :(得分:0)

我发现我能做到的另一种方式是:

Listing.eager(item: :stores).where(active: true).all

这导致前面三个查询,但是我感兴趣的整个关联链被加载。然后我从列表数组中收集项目。

也不确定这是不是正确的方法。