doctrineをsymfonyと組み合わせて使用しています。データベースのセットアップではアノテーションを使用しています。テーブルは正常に作成されましたが、フィールドinteger
に間違った形式city
を指定しました。これを変更する必要があります。 string
。私の理解では、customersクラスのアノテーションをから変更するときは
class Customer{
/**
* @ORM\Column(type="integer", nullable=true)
* @var string city
*/
private $city;
}
に
class Customer{
/**
* @ORM\Column(nullable=true)
* @var string city
*/
private $city;
}
その後、実行します
php bin/console doctrine:migrations:diff
マッピングのすべての変更が認識され、ALTERTABLEクエリなどを含むphpファイルが生成される必要があります。ただし、このコマンドは"マッピング情報に変更が検出されませんでした"で応答します。何が足りないのですか?
キャッシュをクリアする必要がありました
php bin/console doctrine:cache:clear-metadata
最初。成功!
これは、マッピングが無効な場合にも発生する可能性があります。
簡単な回避策は、
php bin/console doctrine:schema:validate
次に、表示されるまでエラーを修正します
[OK] The mapping files are correct.
今度はphp bin/console doctrine:migrations:diff
再び、それは動作するはずです。
注釈を追加する必要があります@Entity
doctrine ORMでエンティティとして認識されるエンティティへ。
<?php
/**
* Customer
*
* @ORM\Table(name="customers")
* @ORM\Entity(repositoryClass="YourBundle/Repository/YourRepositoryName")
*/
class Customer{
/**
* @ORM\Column(type="string", nullable=true)
* @var string city
*/
private $city;
}
このコマンドを使用して、必要な注釈が異なるエンティティを自動生成することもできます。
bin/console doctrine:generate:entity
複雑なSymfony設定を使用している場合は、doctrine.orm.entity_managers.default.mappings
のconfig.yml
設定値を確認してください。おそらく、機能しない場合は、ここに新しいバンドルを追加する必要があります。