правильно создать рекурсивную / рефлексивную связь ManyToMany с доктриной ORM (Symfony)

У меня есть этот объект по имени Pointscomptage.php:

class Pointscomptage

{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="invariant", type="string", length=150, nullable=false)
*/
private $invariant;

/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=150, nullable=false)
*/
private $nom;

/**
* @var string
*
* @ORM\Column(name="consoProduction", type="string", length=150, nullable=false)
*/
private $consoProduction;

/**
* @var Typesenergie
*
* @ORM\ManyToOne(targetEntity="Typesenergie", inversedBy="pointscomptage")
* @ORM\JoinColumn(name="typesenergie_id", referencedColumnName="id")
*/
private $typesenergie;

/** ... getters and setters */

Мне нужно понять, как создать ManyToMany рекурсивный или же возвратный отношение к этой сущности.

То есть У очков может не быть (0) или много (n) очков..

Как сделать это отношение на этой же сущности?


РЕДАКТИРОВАТЬ

Благодаря Йован Перович Ответ и предложение это решение я нашел, мы должны соблюдать доктрину аннотации:

/**
* @ORM\ManyToMany(targetEntity="Pointscomptage")
* @ORM\JoinTable(name="pointscomptage_link_table",
* joinColumns={
*     @ORM\JoinColumn(name="pointscomptage_id", referencedColumnName="id")
*   },
*   inverseJoinColumns={
*     @ORM\JoinColumn(name="id_pointscomptage2", referencedColumnName="id")
*   }
* )
**/
private $pointscomptages;

Спасибо большое.

2

Решение

Это можно сделать так же, как и с любой сущностью. Увидеть официальные документы на @ManyToMany

Например:

/**
* @ManyToMany(targetEntity="Pointscomptage")
* @JoinTable(name="pointscomptage_link_table",
*      joinColumns={@JoinColumn(name="id_pointscomptage1", referencedColumnName="id")},
*      inverseJoinColumns={@JoinColumn(name="id_pointscomptage2", referencedColumnName="id")}
*      )
**/
private $pointscomptages;

В этом примере предполагается следующее:

  • Отношение является однонаправленным. Двунаправленный также легко достигается и описан также в ссылке на документы выше.
  • Соединительная таблица названа pointscomptage_link_table
  • Соединительный стол pointscomptage_link_table содержит два ключа столбца:
    • id_pointscomptage1
    • id_pointscomptage2

Надеюсь это немного поможет…

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]