0

プロジェクトのバグを修正するために何をすべきかわかりません。

属性を持つ多対多の関係でネストされたフォームを処理しようとしています。いずれかの側に ID が必要なため、関連付けを作成できないというエラーが表示されます。

大丈夫。なので、足りない面だけ作ってみました。しかし、それでも同じエラーです。

最後に、この単純なコードにも同じ問題があることに気付きました。

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

「ねえ、フラッシュするものがありません!」などのエラー メッセージが表示されるとありがたいです。しかし、いいえ、まだ同じエラーです。オブジェクトを関連付ける前に、オブジェクト (およびその ID) を作成する必要があります。

スタックトレースを見てみました。はい、 UnitOfWork ->computeAssociationChanges がフラッシュ後に呼び出され、関連付けられたオブジェクトの ID が必要なようです。

フラッシュ コマンドでバグが発生した場合、データベースにオブジェクトを作成するにはどうすればよいですか?

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 に答える