Symfony2项目中使用了2个数据库,并且有一个迁移脚本放置在位置
app/DoctrineMigrations/codes/Version20150914201128.php
此迁移不适用于默认数据库,而是用于第二个使用的数据库。
需要在用户选择上运行迁移脚本。在某些操作上,弹出窗口将打开,如果用户选择“是”,则只需要运行该迁移脚本。
在Symfony2中通过Controller或Service运行迁移脚本是否可行或正确?
答案 0 :(得分:2)
看看这个例子。您可以从控制器操作轻松触发doctrine migrations命令。
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\HttpFoundation\Response;
class SpoolController extends Controller
{
public function migrateAction($entity_manager = 'default')
{
$kernel = $this->get('kernel');
$application = new Application($kernel);
$application->setAutoExit(false);
$input = new ArrayInput(array(
'command' => 'doctrine:migrations:migrate',
'--em' => $entity_manager,
));
// You can use NullOutput() if you don't need the output
$output = new BufferedOutput();
$application->run($input, $output);
// return the output, don't use if you used NullOutput()
$content = $output->fetch();
// return new Response(""), if you used NullOutput()
return new Response($content);
}
}
这个稍微改变的示例来自文档章节 How to trigger a Command from a Controller 。
答案 1 :(得分:1)
Process Component可以是一个解决方案:
await