0

好吧,我不知道如何修复我的项目中的错误。

我正在尝试处理具有多对多属性关系的嵌套表单。错误表明它无法创建关联,因为其中一方需要 ID。

好的。所以我试图只创造缺失的一面。但仍然是同样的错误。

最后,我意识到这个简单的代码仍然存在同样的问题:

public function onSuccess(Page $page)
{   
    $this->em->flush();
}

我很高兴收到一条错误消息,例如“嘿,没有什么可刷新的!” 但是不,仍然是同样的错误:我必须在关联之前创建对象(及其 id)。

我查看了堆栈跟踪。是的,似乎 UnitOfWork ->computeAssociationChanges 在刷新后被调用,并且需要关联对象的 Id。

如果 flush 命令产生错误,我如何在数据库中创建对象?

4

1 回答 1

1

问题是由于实体类中的一个重大拼写错误。我通过使用 Symfony 的附加组件检查架构结构找到了它:

<?php
namespace Lp\LibBundle\Command;

use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Bundle\DoctrineBundle\Command\Proxy\DoctrineCommandHelper;
use Doctrine\ORM\Tools\Console\Command\ValidateSchemaCommand;

class MyValidateSchemaCommand extends ValidateSchemaCommand
{

/**
 * (non-PHPdoc)
 * @see Tools/Console/Command/Doctrine\ORM\Tools\Console\Command.ValidateSchemaCommand::configure()
 * 
 * Modifies name of the command to be in Doctrine namespace
 * Adds the Helper em for the entity manager which is not defined in Doctrine class 
 * @author ulrich, 09/09/11
 */
protected function configure()
{
    parent::configure();
    $this->setName('doctrine:orm:validate-schema');
    $this->addOption('em', null, InputOption::VALUE_OPTIONAL, 'The entity manager to use for this command');
}

/**
 * (non-PHPdoc)
 * @see Tools/Console/Command/Doctrine\ORM\Tools\Console\Command.ValidateSchemaCommand::execute()
 * 
 * Ajoute le Helper em pour l'entity manager qui n'est pas définis dans la class Doctrine
 * @author ulrich, 09/09/11
 */
protected function execute(InputInterface $input, OutputInterface $output)
{
    DoctrineCommandHelper::setApplicationEntityManager($this->getApplication(), $input->getOption('em'));

            return parent::execute($input, $output);
}

资料来源:乌尔里希

这允许使用此命令指令来检测实体拼写错误。

> php app/console doctrine:orm:validate-schema
于 2013-01-20T12:24:50.657 回答