我根据Workbench中生成的ER模型自动创建了两个实体(使用本手册http://symfony.com/doc/2.8/doctrine/reverse_engineering.html)。我的目的是建立一对一的关系,但注释显示它是一对多的关系。我创建了也嵌入了表单。我想将客户端和新地址插入数据库。我仍然收到错误:
通过“UlaBundle \ Entity \ Client #adres”关系找到了一个新实体,该关系未配置为对实体进行级联持久操作:qqq。要解决此问题:在此未知实体上显式调用EntityManager#persist()或在映射中配置级联持久保存此关联,例如@ManyToOne(..,cascade = {“persist”})。
即使我设置了@ManyToOne(..,cascade = {“persist”})和__toString函数,也会显示错误。问题是什么?请帮忙。在我的代码下面:
///客户实体
class Client
{
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=45, nullable=true)
*/
private $name;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \UlaBundle\Entity\Adres
*
* @ORM\ManyToOne(targetEntity="UlaBundle\Entity\Adres", cascade= {"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="adres_id", referencedColumnName="id")
* })
*/
private $adres;
/// Adres Entity
class Adres
{
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=45, nullable=true)
*/
private $name;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
///控制器
/**
* @Route("/client", name="client")
*/
public function clientAction(Request $request) {
$c = new Client();
$form = $this->createForm(ClientType::class,$c);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$m = $this->getDoctrine()->getManager();
$m->persist($c);
$m->flush();
return new Response('Added');
}
return $this->render('UlaBundle:Default:client_form.html.twig', array('form' => $form->createView()));
}
答案 0 :(得分:0)
我认为你的问题来自cascade = {“persist”}中的空格,你应该删除它
/**
* @var \UlaBundle\Entity\Adres
*
* @ORM\ManyToOne(targetEntity="UlaBundle\Entity\Adres", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="adres_id", referencedColumnName="id")
* })
*/
private $adres;