У меня есть это сопоставление между двумя объектами:
class Orders { // Other attributes /** * @ORM\OneToMany(targetEntity="OrderHasProduct", mappedBy="order") */ protected $orderProducts; // Other set/get methods public function getOrderProducts() { return $this->orderProducts; } } class Product { // Other attributes /** * @ORM\OneToMany(targetEntity="\Tanane\FrontendBundle\Entity\OrderHasProduct", mappedBy="product") */ protected $orderProducts; // Other set/get methods public function getOrderProducts() { return $this->orderProducts; } }
И, конечно же, поскольку многие Заказы могут иметь много продуктов, но также есть дополнительный атрибут, этот дополнительный объект необходим:
class OrderHasProduct { /** * @ORM\Id * @ORM\ManyToOne(targetEntity="\Tanane\FrontendBundle\Entity\Orders") * @ORM\JoinColumn(name="general_orders_id", referencedColumnName="id") */ protected $order; /** * @ORM\Id * @ORM\ManyToOne(targetEntity="\Tanane\ProductBundle\Entity\Product") * @ORM\JoinColumn(name="product_id", referencedColumnName="id") */ protected $product; /** * @ORM\Column(type="integer", nullable=false) */ protected $amount; public function setOrder(\Tanane\FrontendBundle\Entity\Orders $order) { $this->order = $order; } public function getOrder() { return $this->order; } public function setProduct(\Tanane\ProductBundle\Entity\Product $product) { $this->product = $product; } public function getProduct() { return $this->product; } public function setAmount($amount) { $this->amount = $amount; } public function getAmount() { return $this->amount; } }
Когда я редактирую заказ, я должен иметь возможность добавлять / удалять продукты в этом порядке, но я не знаю, как это сделать. Я знал, что должен использовать коллекцию форм, но как? Я имею в виду, что сборник должен вставляться следующим образом:
$builder->add('product', 'collection', array( 'type' => new OrderHasProductType(), 'allow_add' => true, 'allow_delete' => true ));
Когда мне нужно создать новую форму OrderHasProductType
и я думаю, что до сих пор понимаю, но мой вопрос заключается в том, что происходит с идентификатором заказа? Каков надлежащий способ обработки встроенной формы отношения n: m с дополнительными параметрами?
Может ли кто-нибудь дать мне пример кода, чтобы заказать мои идеи?
Дополнительные ресурсы