これは私のための頭のスクラッチャーのビットされているので、私は本当にこの1つの入力を感謝します。リレーションシップの組み合わせによる教義フィルタ
カテゴリ>製品>バリアント>バリアントプロパティの4つのエンティティがあります。
VariantPropertyはキー値のペアです(例: 'Color' => 'Blue')。製品には多くのバリアントがあり、カテゴリには多くの製品があります。
私は、Productリポジトリから、VariantPropertiesの一致するセットを持つバリエーションを含む製品を見つける方法を考えようとしています。条件がafaikの関係深度とどのように機能し、リポジトリメソッドを使用するかによって条件が機能しません。VariantPropertyに一致するバリアントを持つ製品を見つけるためにフィルタリングできます。
私はVariantPropertiesのセットでフィルタリングする方法を考えることはできません。コードでそれをやろうとしましたが、私たちが持っているバリエーションの量では、私は100MB +を使いすぎてしまいます。
カテゴリの製品への多対多の関係を持っている 製品は、バリアント にOneToManyの関係を持っており、変異体はVariantPropertiesにOneToManyの関係を持っています。
これは、バリアントごとにさまざまな種類のプロパティがあるために行われます。
私の唯一の他の考えは、VariantPropertiesのバリエーションIDでグループ化され、そこから出てくる一致するセットを見つけることでしたが、それは私にとってややハッキリなようです。
なぜあなたは、カテゴリリポジトリにこれを実行しようとしていますか?製品を探したい場合は、製品リポジトリで作業する必要があります。とにかく、適切な左結合とバリアントプロパティの条件を使ってDQLでクエリを実行することはできませんか?何か不足していますか? – ste
私は謝罪しました、私は製品リポジトリを意味しました。今修正しました。私は、私はおそらく何かが欠けていることができると確信していますが、それは唯一のVariantPropertyエンティティのセットと一致したバリアントの製品を返すように私は、クエリを構築するための最善の方法を考えることはできません。つまり、私はVariantPropertyエンティティ一致する「色」=>「赤」との関係と実体一致する「幅」=>「8088」を持つ変種で製品を見つける必要があります。私はおそらくこの時点で明らかに何かを見逃しているでしょう。 – Andre