我已經繼承了沒有遷移的Symfony 3項目。找不到Symfony 3 addIndex的原則遷移。爲什麼?
繼documentation之後,我在Symfony中添加了Doctrine Migrations Bundle。
$ composer require doctrine/doctrine-migrations-bundle "^1.0"
新增的配置config.yml
doctrine_migrations:
dir_name: "%kernel.root_dir%/DoctrineMigrations"
namespace: Application\Migrations
table_name: migration_versions
name: Application Migrations
然後加入裝載機appKernel.php
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
現在的控制檯顯示學說:遷移:*爲可用的功能,所以然後我生成我的遷移文件
php bin/console doctrine:migrations:generate
Generated new migration class to "/path/to/project/app/DoctrineMigrations/Version20100621140655.php"
然後繼續與Doctrine migrations documentation沿着以下內容:
public function up(Schema $schema)
{
// alter my table
$options = ['fields' => ['type_id']];
$schema->addIndex('advertiser', 'idx_type_id', $options);
...
}
現在,當我運行遷移:
Migrating up to 20170714165306 from 20170714155549
++ migrating 20170714165306
[Symfony\Component\Debug\Exception\UndefinedMethodException]
Attempted to call an undefined method named "addIndex" of class "ProxyManagerGeneratedProxy\__PM__\Doctrine\DBAL\Schema\Schema\Generatedaca9b50393335f8354881e485c485329".
現在,當我得到這個錯誤,我搜索上發現ocramius/ProxyManager。我用
composer require ocramius/proxy-manager "^2.0"
安裝,仍然有同樣的錯誤。
當然,在大多數學說遷移文件,我看主要是addSql('ALTER TABLE ...')
類型語句,但我想使用的包裝方法addIndex
,removeIndex
等
有人能解釋如何讓這些功能的工作?
引用的文檔看起來並不符合'doctrine-migrations-bundle'軟件包,但試試這個'$ schema-> getTable('table_name') - > addIndex(...)'檢查出'addIndex )'簽名。 – yceruto