检测Symfony2中的实体错误配置

时间:2013-01-06 21:14:17

标签: symfony doctrine-orm

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

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

问题是由于实体类中的maj拼写错误。 我通过使用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);
}

Source: Ulrich

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

> php app/console doctrine:orm:validate-schema