Nun, ich bin nicht sicher über dieses Verhalten in der Lehre, aber wenn das der Fall ist, dann können Sie etwas tun, was ich fast immer tue. Stellen Sie die ManyToMany-Beziehung als zwei OneToMany-ManyToOne dar. Sie müssen Ihre eigene PageBlock-Entität erstellen und ihre Fremdschlüssel konfigurieren.
class Page{
/**
* @var array
*
* @ORM\OneToMany(targetEntity="PageBlock", mappedBy="page", cascade={"all"})
*/
private $pageBlocks;
}
class Block{
/**
* @var array
*
* @ORM\OneToMany(targetEntity="PageBlock", mappedBy="block", cascade={"all"})
*/
private $pageBlocks;
}
class PageBlock{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \stdClass
*
* @ORM\ManyToOne(targetEntity="Page", inversedBy="pageBlocks")
* @ORM\JoinColumn(name="id_page", referencedColumnName="id")
*/
private $page;
/**
* @var \stdClass
*
* @ORM\ManyToOne(targetEntity="Block", inversedBy="pageBlocks")
* @ORM\JoinColumn(name="id_block", referencedColumnName="id")
*/
private $block;
}
Wie Sie sehen können, bleibt der Primärschlüssel als ID, also Problem gelöst. Ich sage fast immer, weil ich es so mache, wenn ich ein zusätzliches Attribut in der Beziehung brauche (fast immer passiert es). Ich vermute, dass dies eine Möglichkeit wäre, dies mit der Annotation von ManyToMany zu tun, aber es gibt keinen Unterschied zu diesem Ansatz.
Ich hoffe, dies hilft Ihnen.
Duplizieren? : http: //stackoverflow.com/questions/24120435/doctrine-manytomany-on-same-entity-duplicate-entry-error –
@BenHillier kein Duplikat, auch wenn es ganz dasselbe ist. Das Problem ist, dass ich so viele Duplikate zulassen möchte, wie ich möchte, so dass derselbe Block X-mal zu derselben Seite hinzugefügt werden kann. – Lucio