2017-09-27 8 views
0

私は、コマンドライン

/** 
* @Route("admin/database/update", name="adyax_database") 
*/ 
public function refreshdatabaseRoutes() 
{ 

    ini_set('memory_limit', '-1'); 
     ini_set('max_execution_time', 300); 
    $kernel = $this->container->get('kernel'); 

    $application = new Application($kernel); 
    $application->setAutoExit(false); 

    $input = new ArrayInput([ 
     'command' => 'doctrine:schema:update --force', 

    ]); 

    $output = new BufferedOutput(); 
    $application->run($input, $output); 

    return $this->redirectToRoute('homepage'); 
} 

を使用することはできませんので、私はsymfonyの中にデータベースを更新するためのコントローラを作成し、私はそれが動作しないと思いますが、エラーが与えられていません。何らかのエラーがあるかどうかを私は理解できますか?

答えて

1

まず、コマンドの結果を取得するには、$output変数を使用する必要があります。出力内容は$output->fetch()で取得できます。

とにかく、$inputで間違いました。 commandの配列の要素には、コマンドの名前しかないはずなので、ただdoctrine:schema:updateです。パラメータは、この配列の別々の要素として渡す必要があります。パラメータに値(--forceなど)がない場合は、値としてtrueと設定します。

$input = new ArrayInput([ 
    'command' => 'doctrine:schema:update', 
    '--force' => true, 
]); 
+0

感謝の申し訳ありませんが私は、コマンドの教義を作成する必要がありました場合:生成を:エンティティAppBundle:

だから最後にあなたが問題ないはずStufa私行う$入力=新しいArrayInput([「コマンド」=> 'doctrine:generate:entities'、 'AppBundle:Stufa' => true、 ]); ?? –

+2

はい、そうしてはいけません! 'doctrine:generate:entities'は厳密な開発コマンドです。ローカル環境での開発中にのみ実行する必要があります。ところで、「教義:スキーマ:更新」も生産に使用すべきではありません。それが成功するかどうかを確かめることができず、そうでない場合、プロダクションアプリがクラッシュし、ロールバックを行う簡単な方法がないので、かなり危険です。 –

関連する問題