2015-11-25 2 views
0

У меня есть проблема. Я моделирую структуру БД с помощью объектов Doctrine 2, и я застрял в одном отношении.Матричное сопоставление типов с объектами Doctrine

Что мне нужно для представления в базе данных представляет собой матрицу, как таблицы:

| |A|B|C|D| 
|A| x 
|B|x x 
|C| x x 
|D| x 

Что таблица показывает, что предложения доступны с другими предложениями (х = ИСТИНА, пусто = ложь). То, что я пытался сделать, - это отношения «многие-многие» с доктриной, надеясь, что это приведет к созданию таблицы сопоставления, но 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; 

Я знаю, что может создать объект отображения таблицы вручную и использовать один для многих отношений. Но мне интересно, есть ли более умный способ приблизиться к этому.

ответ

0

Ничего, я нашел проблему. Создание сопоставлений в этом случае только смущает Доктрину. Удаление отображения и инверсии compleely решить эту проблему:

/** 
* @var \Doctrine\Common\Collections\Collection 
* @ORM\ManyToMany(targetEntity="Core\Entity\Offers\OfferAvailability", fetch="EXTRA_LAZY") 
*/ 
protected $availableWith; 

Это вызвало отображение таблицы:

------------------------------------ 
|offeravailablity_offeravailability| 
------------------------------------ 
|offeravailability_source   | 
|offeravailability_target   | 
------------------------------------ 
Смежные вопросы