You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Symfony中使用Doctrine类获取当前的Doctrine migration版本号?

获取当前Doctrine迁移版本的官方方法

存在官方封装的方法,无需自行编写原生SQL查询。

场景1:单独使用Doctrine Migrations库

通过Doctrine\Migrations\Metadata\Storage\MetadataStorage类的getCurrentVersion()方法即可直接获取最新已执行的迁移版本,该方法底层封装了你提到的原生查询逻辑,是官方推荐的实现方式。
示例代码:

use Doctrine\Migrations\DependencyFactory;
use Doctrine\Migrations\Metadata\Storage\MetadataStorage;

// 已完成Migrations配置初始化、构建好DependencyFactory实例
$dependencyFactory = DependencyFactory::fromConnection($migrationConfig, $dbConnection);
$metadataStorage = $dependencyFactory->getMetadataStorage();

// 获取当前最新版本
$latestMigration = $metadataStorage->getCurrentVersion();
// 提取版本号字符串
$latestVersionStr = $latestMigration->getVersion();

场景2:Symfony框架使用DoctrineMigrationsBundle

无需自行实例化依赖类,直接注入Doctrine\Migrations\Metadata\Storage\MetadataStorage服务即可调用:

use Doctrine\Migrations\Metadata\Storage\MetadataStorage;

class MigrationVersionService
{
    public function __construct(
        private MetadataStorage $metadataStorage
    ) {}

    public function getLatestExecutedVersion(): ?string
    {
        $latestVersion = $this->metadataStorage->getCurrentVersion();
        // 无任何迁移执行记录时返回null
        return $latestVersion->isExecuted() ? $latestVersion->getVersion() : null;
    }
}

注意事项

  • 以上方法仅适用于Doctrine Migrations 3.0及以上版本,低于3.0的老版本可通过Doctrine\Migrations\Version\AliasResolver类的resolveVersionAlias('current')方法获取版本号。
  • 如果项目配置了多个迁移组,可以调用MetadataStorage::getAvailableVersions()拿到所有已执行的迁移记录,再按分组筛选对应最新版本即可。

内容的提问来源于stack exchange,提问作者michnovka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:54:03