symfony – 如何在架构更新中处理自定义sql函数?

有时,当您在寻找性能时,需要使用某种复杂性函数和触发器将一些职责委托给数据库.我想知道在调用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

点赞