Doctrine Symfony3的更新稍微多了一点
我有一个CMS爱好项目,在Symfony中运行更新时遇到问题 我有三个相互链接的实体 第条实体:Doctrine Symfony3的更新稍微多了一点,doctrine,entity,symfony,Doctrine,Entity,Symfony,我有一个CMS爱好项目,在Symfony中运行更新时遇到问题 我有三个相互链接的实体 第条实体: /** * @var \StaticBundle\Entity\Revision * * @ORM\Id * @ORM\GeneratedValue(strategy="NONE") * @ORM\OneToOne(targetEntity="StaticBundle\Entity\Revision") * @ORM\JoinColumns({ * @ORM\JoinColumn(
/**
* @var \StaticBundle\Entity\Revision
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\OneToOne(targetEntity="StaticBundle\Entity\Revision")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="revision", referencedColumnName="rid")
* })
*/
private $revision;
修订实体:
/**
* @var \StaticBundle\Entity\Content
*
* @ORM\ManyToOne(targetEntity="StaticBundle\Entity\Content")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="content", referencedColumnName="cid")
* })
*/
private $content;
内容实体:
这是一个简单明了的实体。这里没有亲戚
控制器方法:
/**
* @param Entity $entity $form->getData(); (Can be Article, Page etc)
* @param Person $person The user (FOSUserBundle)
*/
private function newRevision($entity, $person) {
$em = $this->getDoctrine()->getManager();
// Either fetch Content Entity from DB or the $entity.
$content = $em->getRepository('StaticBundle:Content')
->find($entity->getRevision()->getContent()->getCid());
// Creating the new Revision Entity.
$revision = new Revision();
...
$revision->setContent($content);
// instantiating the node type. EX: Article
$contentType = $entity->getRevision()->getContent()->getContenttype();
$contentTypeObject = $contentType->getNamespace() . "\\" . $contentType->getName();
$newEntity = new $contentTypeObject();
$newEntity->setRevision($revision);
// Setting the value from the article form $entity to the new Entity
$object = new \ReflectionObject($newEntity);
foreach ($object->getMethods() as $method) {
if($method->name != "setRevision") {
if(substr($method->name, 0, 3) == "set") {
$set = (string)$method->name;
$get = "get" . substr($method->name, 3);
$newEntity->$set($entity->$get());
}
}
}
$em->flush();
dump($newEntity);
}
假设系统能够对“节点”进行多个修订 例: 内容id:21可以有 修订编号:22(名称:b) 修订编号:23(名称:c) 但是当我想要创建一个新版本(id:24 name:d)时,新版本和现有版本都会用新名称更新 现在看起来是这样的: 内容id:21可以有 修订编号:22(名称:b) 修订编号:23(名称:d) 修订编号:24(名称:d)
我如何避免这种情况?这条原则是通过简单的冲洗完成的() 你能分享你的控制器代码来创建新的实体版本吗?我已经测试了更多的版本,看起来只有最后两个版本被修改了。那么Symfony似乎在插入新版本时更新了活动版本?