我有两个实体
TB\Entity\UserProfile
/**
* @OneToMany(targetEntity="TB\Entity\ShopVideo", mappedBy="shop",
* cascade={"persist", "remove"}
* )
*/
private $video;
和 TB \实体\ ShopVideo
/**
* @var UserProfile
*
* @ManyToOne(targetEntity="TB\Entity\UserProfile")
* @JoinColumns({
* @JoinColumn(name="shop", referencedColumnName="id")
* })
*/
private $shop;
如果我这样创建一个UserProfile实例和一个ShopVideo实例
$profile = new TB\Entity\UserProfile();
$model = new TB\Entity\ShopVideo();
$profile->getShopVideo()->add($model);
$this->_em->persist($profile);
$this->_em->flush();
我希望'shop'列可以填充'UserProfile'的id(以及其他有效的模型)......但是我得到错误(由于外键限制)
PDOException:SQLSTATE [23000]:完整性约束违规:1048列“shop”不能为null
/Users/ABCD/work/TB/TB/library/Doctrine/DBAL/Statement.php:131
/Users/ABCD/work/TB/TB/library/Doctrine/ORM/Persisters/BasicEntityPersister.php:226
/Users/ABCD/work/TB/TB/library/Doctrine/ORM/UnitOfWork.php:698
/Users/ABCD/work/TB/TB/library/Doctrine/ORM/UnitOfWork.php:280
/Users/ABCD/work/TB/TB/library/Doctrine/ORM/EntityManager.php:328
我只是不明白为什么ShopVideo没有级联操作并使用USerProfile的id设置shop列?任何帮助将不胜感激!
答案 0 :(得分:0)
在你的@ManyToOne上尝试添加inversedBy =“video”。这可能会也可能不会解决此问题,但在双向关联的情况下,它是必需的属性。