Symfony 2.4.2 作曲家迁移包

Posted

技术标签:

【中文标题】Symfony 2.4.2 作曲家迁移包【英文标题】:Symfony 2.4.2 composer Migrations bundle 【发布时间】:2014-04-24 20:40:17 【问题描述】:

我正在试用 Symfony,但在我决定不测试迁移后遇到了一些问题。

从我了解到的文档中,我必须将其添加到作曲家 json。

"doctrine/doctrine-migrations-bundle": "dev-master",

这就是我现在所拥有的:

"require": 
        "php": ">=5.3.3",
        "symfony/symfony": "~2.4",
        "doctrine/orm": "~2.2,>=2.2.3",
        "doctrine/doctrine-bundle": "~1.2",
        "doctrine/doctrine-migrations-bundle": "dev-master",
        "twig/extensions": "~1.0",
        "symfony/assetic-bundle": "~2.3",
        "symfony/swiftmailer-bundle": "~2.3",
        "symfony/monolog-bundle": "~2.4",
        "sensio/distribution-bundle": "~2.3",
        "sensio/framework-extra-bundle": "~3.0",
        "sensio/generator-bundle": "~2.3",
        "incenteev/composer-parameter-handler": "~2.0"
    ,

但这不起作用。它找不到正确的版本。

这是错误:

问题 1 - 学说/学说迁移捆绑开发大师的安装请求 -> 学说/学说迁移捆绑 [开发大师] 可满足。 - 学说/学说迁移包 dev-master 需要学说/迁移 * -> 找不到匹配的包。

潜在原因: - 包名中的拼写错误 - 根据您的最低稳定性设置,该软件包在足够稳定的版本中不可用 有关详细信息,请参阅https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion。

在这之后和大量的谷歌搜索 (https://github.com/doctrine/DoctrineMigrationsBundle/issues/54) 并尝试我尝试设置 "doctrine/doctrine-bundle": "~1.2" 的版本,以要求 aplha 版本。这确实继续安装,但引入了一个新问题。

将此行添加到应用程序内核到 $bundles 数组后:

new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),

我尝试在终端中运行它:php app/console dictionary:migrations:status

但它给了我以下错误:

致命错误:在 /Applications/MAMP/htdocs/symfony/vendor/doctrine/doctrine-migrations-bundle/Doctrine/Bundle/MigrationsBundle/ 中找不到类 'Doctrine\DBAL\Migrations\Tools\Console\Command\LatestCommand'第 30 行的 Command/MigrationsLatestDoctrineCommand.php

现在我真的不知道我错过了什么。我不知道如何让这个工作。我希望有人能给我推动正确的方向!谢谢!

【问题讨论】:

【参考方案1】:

您应该检查https://packagist.org/packages/doctrine/doctrine-migrations-bundle 并尝试安装最新版本。指定更精确的版本对整体稳定性更好,因为获取最新软件包的composer update 可能会对您的应用程序的稳定性产生影响。

【讨论】:

【参考方案2】:

如果要安装doctrine/doctrine-migrations-bundle,还需要安装doctrine/migrations。根据您复制/粘贴的 composer.json,您忘记添加了。

尝试以下方法:

"require": 
    "php": ">=5.3.3",
    "symfony/symfony": "~2.4",
    "doctrine/orm": "~2.2,>=2.2.3",
    "doctrine/doctrine-bundle": "~1.2",
    "doctrine/migrations" : "dev-master",
    "doctrine/doctrine-migrations-bundle" : "dev-master",
    "twig/extensions": "~1.0",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~2.3",
    "sensio/framework-extra-bundle": "~3.0",
    "sensio/generator-bundle": "~2.3",
    "incenteev/composer-parameter-handler": "~2.0"
,

您收到此错误:

Fatal error: Class 'Doctrine\DBAL\Migrations\Tools\Console\Command\LatestCommand' not found in /Applications/MAMP/htdocs/symfony/vendor/doctrine/doctrine-migrations-bundle/Doctrine/Bundle/MigrationsBundle/Command/MigrationsLatestDoctrineCommand.php on line 30

因为doctrine/migrations 尚未下载,并且doctrine/doctrine-migrations-bundle 缺少几个类。

【讨论】:

我在这里完全遗漏了什么吗?第6行是别的吗? :) @DionSnoeijen,第 6 行确实与第 7 行不同。这是捆绑包正常工作所需的所有组件。您也可以只安装doctrine/migrations 并自行使用其组件,但我认为这不是您要在这里实现的目标;) 哦!我真是太愚蠢了。我完全错过了!谢谢大佬!

以上是关于Symfony 2.4.2 作曲家迁移包的主要内容,如果未能解决你的问题,请参考以下文章

如何使用相互依赖的作曲家同时安装 2 个 Symfony 包

从单一存储库加载一个特定的作曲家包

当供应商在 Symfony 2.1 中不受作曲家管理时,在哪里注册自动加载?

在 symfony 中使用 SimpleSAMLphp 和 composer

无法使用 symfony 5 安装奏鸣曲管理员

Symfony 5 作曲家更新失败并带有安全检查器