复合密钥和外键作为主键原则2+zend框架2



我一直想知道为什么我的映射和控制器操作不起作用。为此,我需要参考我以前的文章,在那里我描述了我的实体和数据库模式,可以在这里找到。我需要开始一个新的帖子,因为没有进一步的更新,我认为这是引起Doctrine+Zend Pros关注的唯一途径。

正如我在上一篇文章中所描述的,我有一个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
);
}

因此,这基本上就是我在控制器中所做的,将实体保存到两个表(团队表和团队玩家表)中,因为玩家表已经填充了数据。所以我想把球员加入球队,并在这两个表中分配这些值。

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

如有任何帮助,请指出Im在映射部分或控制器侧所犯的错误。

官方文件,尤其是条令2的文件,过于全球化,尤其不符合我的要求。

让我们尝试通过逐步更新这个答案来解决它:

步骤1:你的话暗示了我,你可能在验证中遇到了一些问题,所以让我们检查一下你是否通过了这个$form->isValid()

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());
}

我也可以建议你使用条令命令行:doctrine orm:validate-schema,这个命令将帮助你检查你的实体映射是否正常,加上你的数据库映射也正常,我认为调试你的doctrine2实体很方便

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

最新更新