有时,当您在寻找性能时,您需要使用某种复杂性函数和触发器将一些职责委托给数据库。我想知道当调用doctrine:schema:update命令时,处理这些自定义sql函数以创建/更新的最佳实践是什么。
答案 0 :(得分:1)
您(我认为)更简单的解决方案是创建自己的命令,在内部执行逻辑,并在结束时调用doctrine:schema:update
。
为此,您可以从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
答案 1 :(得分:0)
我不知道如何实现自动运行其他SQL代码,但您可以使用DoctrineMigration。它是手动运行的,但您可以编写自定义SQL和控件版本 - 文件包含创建日期,使用的迁移名称将存储在DB中。