有时,当您在寻找性能时,需要使用某种复杂性函数和触发器将一些职责委托给数据库.我想知道在调用doctrine:schema:update命令时,处理这些自定义sql函数以创建/更新的最佳实践是什么. 最佳答案 您拥有的更简单的解决方案(我认为)是创建自己的命令,在内部执行逻辑,并调用doctrine:schema:update at end.
为此,您可以从UpdateSchemaDoctrineCommand扩展命令或在命令中使用Process.
我更喜欢第一个解决方案,我也会告诉你.
在src / Acme / AppBundle / Command / CustomUpdateSchemaDoctrineCommand.php中创建命令
(例如,使用您自己的一个包)
然后,从父命令扩展它,如下所示:
<?php
namespace Acme\AppBundle\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Doctrine\Bundle\DoctrineBundle\Command\Proxy\UpdateSchemaDoctrineCommand;
class CustomUpdateSchemaDoctrineCommand extends UpdateSchemaDoctrineCommand
{
protected function configure()
{
parent::configure();
$this->setName('custom:schema:update')
}
protected function execute(InputInterface $input, OutputInterface $output)
{
// Do your logic
// Update your database schema
return parent::execute($input, $output);
}
}
如果需要允许运行SQL迁移的工具,请使用DoctrineMigrationsBundle