我似乎陷入了经典的ORM问题,并且不知道如何处理它,所以在这一点上欢迎任何帮助.
有没有办法在hasManyThrough查询上获取数据透视表?更好的是,应用一些过滤器或排序.一个典型的例子
表产品
id,title
表类别
id,title
table products_categories
productsId, categoriesId, orderBy, main
因此,在上面的场景中,假设您希望获得(main = true)的所有类别的产品X,或者您希望按类别对产品类别进行排序orderBy
.
现在会发生什么是第一SELECT
的产品,以获得产品数据,第二SELECT
对products_categories获得categoriesId
和最终SELECT
的类别,以获得实际的类别.理想情况下,过滤器和排序应该适用于第二SELECT
类
SELECT `id`,`productsId`,`categoriesId`,`orderBy`,`main` FROM `products_categories` WHERE `productsId` IN (180) WHERE main = 1 ORDER BY `orderBy` DESC
另一个典型的例子是希望根据用户想要的订单来订购产品图像
所以你会有一个products_images表
id,image,productsID,orderBy
你会想要的
SELECT from products_images WHERE productsId In (180) ORDER BY orderBy ASC
这甚至可能吗?
编辑:这是中间表根据我的架构获得我需要的内容所需的关系.
Products.hasMany(Images, { as: "Images", "foreignKey": "productsId", "through": ProductsImagesItems, scope: function (inst, filter) { return {active: 1}; } });
事情是范围功能让我访问最终结果而不是中间表.