我想在Ordo_soins_perfusion和Ordo_soins_medicament实体之间使用可选的ManyToMany关系。
class Ordo_soins_perfusion
{
/**
* @ORM\ManyToMany(targetEntity="Ordo_soins_medicament",cascade={"persist"})
*@ORM\JoinTable(name="ordo_soinperf_soinmedoc",
* joinColumns={@ORM\JoinColumn(name="Ordo_soins_perfusion_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="Ordo_soins_medicament_id", referencedColumnName="id",nullable=true)})
*/
private $medoc;
class Ordo_soins_medicament
{
/**
* @var string
*
* @ORM\Column(name="medicament", type="string", length=255,nullable=true)
*/
private $medicament;
/**
* @var string
*
* @ORM\Column(name="quantite", type="string", length=50,nullable=true)
*/
private $quantite;
现在,当我在不填写Ordo_soins_medicament表单的情况下保存新的Ordo_soins_perfusion对象时,我发现在连接表和Ordo_soins_medicament表中创建了一个新的ligne。
仅在不为null时添加Ordo_soins_medicament对象
谢谢
答案 0 :(得分:0)
首先确保ManyToMany
关系正确无误。然后在这些属性上初始化一个空的new ArrayCollection()
,这样就可以通过Doctrine添加关系。
public function __construct()
{
$this->medoc = new ArrayCollection();
}
下一步是通过添加getter / setter来确保正确设置关系。如果是收藏品,您还可以使用add
。
public function addMedoc($item)
{
$item->setPerfusion($this);
$this->medoc->add($item);
}
当您持久并刷新新实体时,Doctrine将处理关系/连接表。