У меня есть небольшая проблема. я моделирую структуру БД, используя объекты Doctrine 2, и я застрял с одним отношением.
То, что мне нужно представить в базе данных, - это матрица, подобная таблице:
| |A|B|C|D|
|A| x
|B|x x
|C| x x
|D| x
Таблица показывает, какие предложения доступны с другими предложениями (x=true, empty = false). То, что я пытался сделать, — это отношения «многие ко многим» с доктриной, надеясь, что это сгенерирует таблицу сопоставления, но Doctrine этого не делает. Вот моя сущность:
/**
* @ORM\Entity @ORM\HasLifecycleCallbacks
* @ORM\Entity(repositoryClass="Core\Repository\Main")
* @ORM\Table(name="offer_availability")
*/
class OfferAvailability implements JsonSerializable
{
/**
* @var int
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @var String
* @ORM\Column(type="string")
*/
protected $name;
/**
* @var \Doctrine\Common\Collections\Collection
* @ORM\ManyToMany(targetEntity="Core\Entity\Offers\OfferAvailability", mappedBy="availableWith", inversedBy="availableWith", fetch="EXTRA_LAZY")
*/
protected $availableWith;
Я знаю, что могу создать объект таблицы сопоставления вручную и использовать отношения «один ко многим». Но что мне интересно, есть ли более умный способ приблизиться к этому.