Doctrine orm 复合键和外键作为主键原则2+zend框架2

Doctrine orm 复合键和外键作为主键原则2+zend框架2,doctrine-orm,zend-form,zend-framework2,Doctrine Orm,Zend Form,Zend Framework2,我一直在想为什么我的映射和控制器操作不起作用。为此,我需要参考我以前的文章,在那里我描述了我的实体和数据库模式,可以找到它们。我需要开始一个新的帖子,因为没有进一步的更新,我认为这是唯一的方式来获得条令+Zend专业人士的注意 正如我在上一篇文章中所描述的,我有一个Zend表单,用户可以输入teamId和teamName,他还可以从表单上的下拉列表中选择多个球员,并可以将球员分配给团队。所以基本上,这就是我用教义和Zend实现的目标。为此,我编写了上一篇文章中描述的实体,现在我想从控制器中添加代

我一直在想为什么我的映射和控制器操作不起作用。为此,我需要参考我以前的文章,在那里我描述了我的实体和数据库模式,可以找到它们。我需要开始一个新的帖子,因为没有进一步的更新,我认为这是唯一的方式来获得条令+Zend专业人士的注意

正如我在上一篇文章中所描述的,我有一个Zend表单,用户可以输入teamId和teamName,他还可以从表单上的下拉列表中选择多个球员,并可以将球员分配给团队。所以基本上,这就是我用教义和Zend实现的目标。为此,我编写了上一篇文章中描述的实体,现在我想从控制器中添加代码来持久化实体

控制器:

 public function addAction()
    {
        $form = new TeamForm($this->getEntityManager());

        $form->get('submit')->setAttribute('value', 'Add');

        $request = $this->getRequest();

        if ($request->isPost())
        {
            $team = new Team();
            $player = new Player();
            $teamPlayers = new TeamPlayer();

            $form->setInputFilter($typeset->getInputFilter());

            $form->setData($request->getPost());

            if ($form->isValid())
            {
                $team->populate($form->getData());

                $teamPlayers->setPlayer($player);
                $teamPlayers->setTeam($team);

                $this->getEntityManager()->persist($teamPlayers);

                $this->getEntityManager()->flush();

               //Reroute to the index page once the data is successfully added
            }
        }
        //return form array
        return array(
            'form' => $form
            );
    }
这就是我在控制器中所做的,将实体保存到两个表TeamTable和teamPlayer表中,因为播放器表已经填充了数据。因此,我想将球员添加到团队中,并在这两个表中分配该值

现在我可以看到我的表单,当我输入数据并按submit时,什么都没有发生,我可以看到表单,而不需要执行任何操作。当数据成功保存到数据库中时,我会将其重新路由到索引页,但这不会发生

如果您能在映射部分或控制器端指出我所犯的错误,我们将不胜感激


官方文件,特别是第2条的官方文件,过于全面,尤其不符合我的要求

让我们尝试通过以下步骤更新此答案来解决此问题:

步骤1: 您的话向我暗示,您可能在验证过程中遇到一些问题,所以让我们检查您是否正在传递此$form->isValid

我还可以建议您使用条令命令行:条令orm:validate schema,此命令将帮助您检查实体映射是否正常,以及数据库映射是否正常,我认为调试doctrine2实体很方便


ps:我还没有深入阅读您的实体

谢谢您的回复,但这无助于找到我一直在寻找的确切解决方案
 if ($form->isValid())
            {
                $team->populate($form->getData());
                $teamPlayers->setPlayer($player);
                $teamPlayers->setTeam($team);
                $this->getEntityManager()->persist($teamPlayers);
                $this->getEntityManager()->flush();
               //Reroute to the index page once the data is successfully added
            }else{
         var_dump($form->getMessages());

}