我想保存我创建的表单,但是我有错误。
我有3个实体:
class T {
/**
* @ORM\OneToOne(targetEntity="MyNameSpace\ProfileBundle\Entity\Person", cascade={"persist"})
*/
private $information;
}
class Person {
/**
* @ORM\OneToOne(targetEntity="MyNameSpace\MediaBundle\Entity\Document", cascade={"persist"}))
*/
private $photo_profile;
}
class Document
{
private $file;
}
当我使用此代码保存“T”类时:
public function createAction()
{
$entity = new T();
$request = $this->getRequest();
$form = $this->createForm(new TType(), $entity);
$form->bindRequest($request);
if ($form->isValid())
{
$em = $this->getDoctrine()->getEntityManager();
$em->persist($entity);
$em->flush();
}
}
我有这个错误:
SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(
namespace
。person
,CONSTRAINTFK_3370D440809EFCB0
FOREIGN KEY({{ 1}})参考photo_profile_id
(Document
))
任何帮助都会很酷
感谢所有
这里是我的代码:
id
我有这个错误:
SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(
/** * Creates a new Tutor entity. */ public function createAction() { $entity = new T(); $person = new Person(); $document = new Document(); $person->setPhoto($document); $entity->setInformation($person); $request = $this->getRequest(); $form = $this->createForm(new TType(), $entity); $form->bindRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getEntityManager(); $em->persist($entity->getInformation()->getPhoto()); $em->persist($entity->getInformation()); $em->flush(); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('Index')); }
。db
,CONSTRAINTT
FOREIGN KEY({{ 1}})参考FK_58C6694C2EF03101
(information_id
))
任何帮助都会很酷
由于
答案 0 :(得分:2)
我也遇到了这个问题并且级联没有帮助所以我最终只使用了oneToMany,manyToOne关系。
我的替代解决方案是不在生成的SQL中应用外键约束但是会删除我的--force能力(并强迫我编写自己的脚本以忽略FK约束),因此oneToMany解决方案是对我来说更优雅。
答案 1 :(得分:0)
您正在尝试保存Person
,但未将与Document(必须命名为photo_profile)的关系指定为可为空,因此出现此错误。
答案 2 :(得分:0)
我对ManyToOne关系有同样的问题;我只是:
嗯,我无法解释,但我只是分享我的经验,也许它会服务!