【发布时间】:2015-08-08 21:48:52
【问题描述】:
首先我想说的是,在发布这个问题之前,我已经阅读了所有文档并在谷歌上搜索了很多内容。我知道那个错误是什么意思(关系中的非持久实体)
在我认为不应该出现的地方出现了这个错误。
我有一个 OneToMany Bi-Directional 关系如下:
Class Channel
{
/**
* @ORM\OneToMany(targetEntity="Step", mappedBy="channel", cascade={"all"}, orphanRemoval=true)
* @ORM\OrderBy({"sequence" = "ASC"})
*/
protected $steps;
}
Class Step
{
/**
* @ORM\ManyToOne(targetEntity="Channel", inversedBy="steps")
*/
protected $channel;
}
一个Channel 可以有多个Steps,拥有方是Channel。从 Doctrine 2.4 升级到 2.5 后,我收到此错误:
Doctrine\ORM\ORMInvalidArgumentException: 找到一个新实体 通过关系 'Company\MyBundle\Entity\Step#channel' 未配置为实体级联持久化操作
为什么还要从反面寻找新的关系?这是我的代码:
$channel = new Channel();
$step = new Step();
$channel->addStep($step);
$em->persist($channel);
$em->flush();
谢谢!
【问题讨论】:
-
Channel::addStep()长什么样子? -
您没有在 Step 实体上指定连接列。所以 Doctrine 不知道如何保存它。
-
如果一个 Channel 可以有多个 Steps,那么我认为拥有方是 Step 实体,而不是 Channel 实体
标签: symfony doctrine-orm doctrine