好吧,我不知道如何修复项目中的错误。
我正在尝试处理具有多对多属性关系的嵌套表单。 错误表明它无法创建关联,因为其中一方需要ID。
好的。所以我试图创造一个缺失的一面。 但仍然是同样的错误。
最后,我意识到这个简单的代码仍然存在同样的问题:
public function onSuccess(Page $page)
{
$this->em->flush();
}
我希望收到一条错误消息,例如“嘿,没有什么可以冲洗!” 但不,仍然是同样的错误:我必须在关联之前创建对象(及其id)。
我看了一下堆栈跟踪。是的,似乎UnitOfWork - > computeAssociationChanges在刷新后被调用,并且需要关联对象的ID。
如果flush命令生成错误,如何在数据库中创建对象?
答案 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);
}
这允许使用此命令指令来检测实体拼写错误。
> php app/console doctrine:orm:validate-schema