有时,当您在寻找性能时,您需要使用某种复杂功能和触发器将一些责任委托给数据库。我想知道当doctrine:schema:update命令被调用时,处理这些自定义sql函数以创建/更新的最佳实践是什么。如何处理架构更新上的自定义sql函数?
4
A
回答
0
我不知道如何实现自动运行其他SQL代码,但您可以使用DoctrineMigration。它是手动运行的,但你可以编写自定义的SQL和控制版本 - 文件包含创建日期,使用的迁移名称将存储在数据库中。
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. Solr的和自定义更新处理
- 2. 刷新构建定义处理参数自定义类型
- 3. 构造函数没有定义[处理]
- 4. 如何处理自定义结果视图的NSFetchedResultsControllerDelegate更新
- 5. KnockoutJS不调用自定义绑定处理程序中的更新函数
- 6. 自动更新自定义函数
- 7. 如何处理的LINQ to SQL架构更改
- 8. SQL如何处理用户定义函数中的异常?
- 9. 如何处理Google App Engine上更新的JDO类定义
- 10. 构造函数注入防止自定义资源处理
- 11. AWS自定义Windows AMI - 如何处理更新?
- 12. 如何审计SQL Server架构更新
- 13. 如何包含自定义SQL函数
- 14. 处理MongoDB架构更改
- 15. 如何理解Wordpress自定义函数?
- 16. UserCake中的自定义PHP SQL更新函数
- 17. 如何处理连字符GraphQL架构定义
- 18. 如何更改phpstorm自定义构造函数模板?
- 19. StackMob自定义代码更新架构的Get请求
- 20. 如何在构造函数的新创建的onjects上定义getter函数?
- 21. Python pickle:处理更新的类定义
- 22. 实体框架如何处理SQL Server架构?
- 23. 如何在Strongloop上为自定义远程方法设置自定义架构
- 24. 如何处理自定义视图框架
- 25. 自定义处理
- 26. 如何从功能内确定PL/SQL函数的架构
- 27. 学说自定义映射型架构更新
- 28. 淘汰赛自定义绑定处理程序不更新
- 29. 如何更新EventSource架构
- 30. 如何处理构造函数?
我会(并且)使用[doctrine:migrations](http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html)。您可以编辑迁移文件来做任何你喜欢的事情。这些可以从cli运行。可能接近你要找的东西。 – DevDonkey