0

まず、次の DB スキーマがあります。

DB スキーマ

categories含む がありますproducts。また、 ( 「赤」、「緑」など)attributesを含む(「色」など)もあります。values

最後に、と の間に ManyToMany 関係があるため、 とをに関連付けるtableattributesproducts介してこれらを に割り当てることができます。このテーブルは Doctrine によって自動的に作成されます。ProductAttributeValuesattribute valueproductProductAttributeValue

このようにして、 (ルノー・メガーヌ、フォード・フォーカスなど)を搭載したcategory(車)を持つことができます。productsそれぞれproductが複数attributes持つことができますvalues(色: グレー、エンジンの種類: ガソリンなど)。この最後の例では、色は でAttribute、グレーはAttributeValueです。エンジンの種類は別Attributeで、ガソリンはAttributeValueです。

エンティティにデータ (カテゴリ、属性、属性値、製品) を入力したら、関連付けるフォームを作成attributesvalues、特定のproduct.

多かれ少なかれ、フォームは次のようになります。

形

したがって、「車」にいるので、これに属するcategoryすべてのもの(エンジンと色) を表示する必要があります。同時に、これらすべてを表示する必要があります(エンジンはガソリン、ディーゼル、電気…、色はグレー、赤、青…)。attributescategoryvaluesattributes

4

1 に答える 1

1

画像のようなフォームを作成しようとしている場合は、コレクション フィールド タイプではなく、 queryBuilderを使用したエンティティフィールドタイプを探しています。

エンティティ フィールド タイプを使用すると、car.category などで属性をグループ化できます。

... または、2 つのエンティティ フィールドを使用して、フィールドの queryBuilder の他の選択ボックスの結果をフィルター処理する (つまり、カテゴリ gas の属性のみを表示する) こともできます。queryBuilder の ->where() ステートメントで使用されているフォーム ビルダーで注入されたカテゴリ プロパティを使用することで、最も効果的です。

複数の新しいカテゴリまたは属性を既存のものに追加/削除/編集する場合は、フォーム タイプコレクションが必要になります。しかし、あなたのフォームは明らかに異なって見えるでしょう.

于 2013-06-08T04:14:38.777 に答える