エンティティをフォームで保存する際に問題があります。問題を引き起こす関係は、多対多の双方向です。
エージェント エンティティ
/**
* @var \Doctrine\Common\Collections\ArrayCollection $agentLists
*
* @ORM\ManyToMany(targetEntity="AgentList", inversedBy="agents")
* @ORM\JoinTable(name="agent_agentlist",
* joinColumns={@ORM\JoinColumn(name="agent_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="agentlist_id", referencedColumnName="id")}
* )
*/
protected $agentLists;
/**
* Get agent lists
*
* @return \Doctrine\Common\Collections\ArrayCollection
*/
public function getAgentLists()
{
return $this->agentLists;
}
/**
* Add agent list to agent
*
* @param AgentList $agentList
*/
public function addAgentList(AgentList $agentList)
{
$this->agentLists->add($agentList);
$agentList->addAgent($this);
}
/**
* Remove agent list from agent
*
* @param AgentList $agentList
*/
public function removeAgentList(AgentList $agentList)
{
$this->agentLists->removeElement($agentList);
$agentList->removeAgent($this);
}
AgentList エンティティ
/**
* @var \Doctrine\Common\Collections\ArrayCollection $agents
*
* @ORM\ManyToMany(targetEntity="Agent", mappedBy="agentLists")
*/
protected $agents;
/**
* Get agents
*
* @return \Doctrine\Common\Collections\ArrayCollection
*/
public function getAgents()
{
return $this->agents;
}
/**
* Add agent
*
* @param Agent $agent
*/
public function addAgent(Agent $agent)
{
$this->agents[] = $agent;
}
/**
* Remove agent
*
* @param Agent $agent
*/
public function removeAgent(Agent $agent)
{
$this->agents->removeElement($agent);
}
エージェント タイプで
->add('agentLists', null, array('choices' => $this->commercial->getAgentLists(), 'required' => false));
AgentList タイプで
->add('agents', null, array(
'required' => false,
'choices' => $commercial->getAgents()
AgentType を使用する場合にのみ機能します。AgentListType を使用する場合、エージェント関係を保存しないでください! 同様に、もし私が:
$agent->addAgentList($agentList);
すべて正常に動作します!もし私が:
$agentList->addAgent($agent);
何も保存しないでください...