Идея такова: есть продукты простые и соединение. Соединения продуктов могут состоять из нескольких простых продуктов, например:Как создать многосвязную ассоциацию с дополнительными полями с помощью Doctrine 2?
Существует продукт «Коктейль» - это простого продукта, со своими характеристиками (название, описание, цена и т.д.), и есть соединение продукт - «Фонтан коктейлей», который включает в себя продукт «Коктейль» в качестве основного компонента. One «Фонтан коктейлей» состоит из 50 «Коктейль».
Прямо сейчас у меня есть продукт лицо, которое имеет многие-ко-многим отношения с автореферентное:
<?php
namespace CT\AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* Class Product
*
* @ORM\Entity
* @ORM\Table(name="products")
*/
class Product
{
/**
* @ORM\id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*
* @var int
*/
protected $id;
/**
* @ORM\Column(type="string")
*
* @var string
*/
protected $name;
/**
* @ORM\Column(
* name="description",
* type="text"
*)
*
* @var string
*/
protected $desc;
/**
* @ORM\Column(type="float")
*
* @var float
*/
protected $price;
/**
* @ORM\Column(
* name="count_type",
* type="string"
*)
*
* @var string
*/
protected $countType;
/**
* @ORM\Column(
* name="default_count",
* type="integer",
* options={"unsigned": true}
*)
*
* @var int
*/
protected $defCount;
/**
* @ORM\Column(type="boolean")
*
* @var bool
*/
protected $isCountable;
/**
* @ORM\Column(type="boolean")
*
* @var bool
*/
protected $isCompound;
/**
* @ORM\ManyToMany(
* targetEntity="Product",
* mappedBy="components"
*)
*
* @var ArrayCollection
*/
private $products;
/**
* @ORM\ManyToMany(
* targetEntity="Product",
* inversedBy="products"
*)
* @ORM\JoinTable(
* name="compound_products",
* joinColumns={
* @ORM\JoinColumn(
* name="main_product_id",
* referencedColumnName="id"
* )
* },
* inverseJoinColumns={
* @ORM\JoinColumn(
* name="component_product_id",
* referencedColumnName="id"
* )
* }
*)
*
* @var ArrayCollection
*/
private $components;
/**
* Product constructor.
*/
public function __construct()
{
$this->products = new ArrayCollection();
$this->components = new ArrayCollection();
}
// Getters & setters...
}
Я хочу, чтобы добавить дополнительное поле количество в compound_products таблица для установки количества простых продуктов в одном составном продукте, чтобы получить выход: http://prntscr.com/cgdvc3
Я нашел одно решение, но я не совсем понимаю, как применить его к моей проблеме: Doctrine many to many self referencing with extra columns
Не могли бы вы объяснить мне, как я мог бы добавить дополнительное поле для моей задачи с сохранением отношения МНОГИХ для многих с самореференцией? Или, если у вас есть лучшее решение, вы можете поделиться им?
Спасибо за совет) Я думал о том же растворе. –