Doctrine2 / Zend1

时间:2015-02-23 14:15:09

标签: mysql zend-framework doctrine-orm

我有一个用Zend 1 / Doctrine2(2.1.5)编写的应用程序。重要的是要注意应用程序的几个重点:

  • 我有一个实体" group"什么可以拥有几种类型:
    • 手册组
    • 待定小组
    • 验证groupe
  • 对于每个不同的类型,对应一个继承自抽象类母亲的类组
  • 我的小组接受过树木训练(图论)。
  • 我必须要有类型ManyToMany的关系,因此需要中间表SQL。     但是,我需要在这种关系中具有特定的属性。     所以,我必须创建一个伪装的关系ManyToMany:我必须创建自己这个中间人。它的名字是" Composition"。
  • 对于类型"待定组",正如其名称所示,用户欠该组验证它是实际的。     如果一个组至少包含5个组,则会自动通过等待验证。
  • 如果某个组正在等待验证,则可以接受或拒绝该组。
  • 如果等待验证的组被拒绝,则返回之前的版本(如果存在)。
  • 如果要接受验证的组正在接受,则它将变为实际且可以使用。

这是我的问题,例如,当一个组进一步等待对组的添加进行验证时,应用程序不会保留该组的旧版本。 实际上,这个新组的添加一方面分配给等待验证的组,也分配给以前类型的组。

这是我的代码:

    public function putAction() {
        //it's not a pending group.
        $pendingGroup = $this->toPendingGroup($object);
        $this->em->persist($pendingGroup);
        $this->em->flush();
        // send mail
    }

    public function toPendingGroup($groupToValidate)
    {
        $newGroup = new Model_Group_Manual_Pending();
        $oldGroup = Serializer_Arrays::serialize($groupToValidate);
        unset($oldGroup['components']);
        Serializer_Arrays::unserialize($oldGroup, 'Model_Group_Manual_Pending', $newGroup);
        $newGroup->setSupport(Gromit_Di::getAcl()->getAuthUser());
        $compositions = array();
        foreach ($groupToValidate->getComponents() as $composition)
        {
            if  ($composition->getId() == NULL) {
                $newComposition = new Model_Composition();
                // Initialisation de ma composition
                $compositions[] = $newComposition;
            }
        }
        $newGroup->setComponents($compositions);
        return $newGroup;
    }
---

总结一下,这是一个情况的计划: example   - 以前的黑色版本   - 红色的新版本   - 蓝色是非故意连接

感谢您的帮助

0 个答案:

没有答案