コンテクスト
私の場合、「割引バウチャー」(割引)付きの注文がいくつかあります。割引は、さまざまな条件下で使用できます。たとえば、割引には有効期限があり、限られた数の顧客が使用でき、ユーザー専用にすることができます...
各割引は、複数の注文に添付できます。
私のバックオフィスでは、利用可能な割引のリストを含む「割引」フィールドを注文作成フォームに追加したいと思いますが、適切な割引のみです。
私が作ったもの
フィールドmanyToManyを持つエンティティ「order」
/** * @ORM\ManyToMany(targetEntity="PATH\MyBundle\Entity\Discount", inversedBy="orders") * @ORM\JoinTable(name="shop_discounts_orders", * joinColumns={@ORM\JoinColumn(name="order_id", referencedColumnName="id")}, * inverseJoinColumns={@ORM\JoinColumn(name="discount_id", referencedColumnName="id")} * ) */ private $discounts;
エンティティは、フィールドmanyToManyで「割引」します
/** * @ORM\ManyToMany(targetEntity="PATH\MyBundle\Entity\Order", mappedBy="discounts") */ private $orders;
フィールド割引のあるフォームOrderType
$builder->add('discounts', 'entity', array( 'label' => 'Discount vouchers', 'required' => false, 'expanded' => true, 'class' => 'PATH\MyBundle\Entity\Discount', 'property' => 'title', 'multiple' => true, 'query_builder' => function(EntityRepository $er) use ($params) { return $er->getQuerySelectType($params); }, ));
このソリューションを使用すると、エンティティリポジトリでリクエストによって定義された特定の割引を返すことができます。たとえば、有効期限のある状態に適しています。
欲しいもの
チェックボックスリストで結果をフィルタリングしたいのですが。実際、割引の使用を専用ユーザーに制限したり、製品のリストに制限したり、使用回数を制限したりしたいのですが...これらの条件は単純なSQLリクエストでは実行できません。
特別なタイプを作成してみます。私の考えは、エンティティの配列を割引して選択リストをロードすることです...その後、dataTransformerを作成しましたが、機能しません!
あなたのアイデアをありがとう!