私は古典的なORMの問題に悩まされているようで、実際にどのように扱うかわからないので、この時点で助けを歓迎します。ループバックリレーショナルデータベースhasManyThroughピボットテーブル
hasManyThroughクエリでピボットテーブルを取得する方法はありますか?さらに良い方法は、フィルタを適用するか、フィルタを並べ替えることです。典型的な例
表製品
id,title
表カテゴリ
id,title
テーブルproducts_categories
productsId, categoriesId, orderBy, main
ので、上記のシナリオでは、あなたが製品のすべてのカテゴリを取得したいと言いますXが(main = true)、または商品カテゴリをorderBy
。実際のカテゴリを取得するカテゴリのcategoriesId
と最終SELECT
を取得するには、製品データを取得するための製品の最初のSELECT
で今products_categories上の第二SELECT
をどうなり
。理想的には、フィルタおよびソートが別の典型的な例は、あなたがproducts_imagesを持っているでしょう
に、ユーザがそれら望んでいる順序に基づいて製品イメージを注文したいことでしょう
SELECT `id`,`productsId`,`categoriesId`,`orderBy`,`main` FROM `products_categories` WHERE `productsId` IN (180) WHERE main = 1 ORDER BY `orderBy` DESC
のように第二SELECT
に適用されなければなりませんテーブル
id,image,productsID,orderBy
、あなたが
SELECT from products_images WHERE productsId In (180) ORDER BY orderBy ASC
したいと思います3210
それは可能ですか?
EDIT:私のスキーマに基づいて必要なものを得るために中間テーブルに必要な関係は次のとおりです。
Products.hasMany(Images,
{
as: "Images",
"foreignKey": "productsId",
"through": ProductsImagesItems,
scope: function (inst, filter) {
return {active: 1};
}
});
機能は、私に最終結果にアクセスして中間テーブルにアクセスできないようにする機能です。
中間テーブルとはどういう意味ですか?私が言ったように、あなたはテーブルを忘れる必要があります、ループバックは、その上に抽象化を提供しています。モデルのプロパティを読み書きするか、別のモデル(例:Product n°5)から関連するモデル(Inst。for Inst。)を識別したい。 – Overdrivr