我创建了一个控制器来更新symfony中的数据库,因为我无法使用命令行
/**
* @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');
}
我认为它不起作用但没有给出错误。我怎么能理解是否有错误?
答案 0 :(得分:1)
首先,如果你想获得命令的结果,你应该使用$output
变量。您可以使用$output->fetch()
获取输出内容。
无论如何,你在$input
中犯了一个错误。在command
数组的元素中,应该只有命令的名称,所以它只是doctrine:schema:update
。任何参数都应作为此数组的单独元素传递。如果参数未采用任何值(例如--force
),只需将true
设置为值。
所以最后你应该没问题:
$input = new ArrayInput([
'command' => 'doctrine:schema:update',
'--force' => true,
]);