web-dev-qa-db-ja.com

doctrine:migrations:diffは「マッピング情報に変更が検出されませんでした」を与えます

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ファイルが生成される必要があります。ただし、このコマンドは"マッピング情報に変更が検出されませんでした"で応答します。何が足りないのですか?

9
agoldev

キャッシュをクリアする必要がありました

php bin/console doctrine:cache:clear-metadata 

最初。成功!

7
agoldev

これは、マッピングが無効な場合にも発生する可能性があります。

簡単な回避策は、

php bin/console doctrine:schema:validate

次に、表示されるまでエラーを修正します

[OK] The mapping files are correct.

今度はphp bin/console doctrine:migrations:diff再び、それは動作するはずです。

4
Greco Jonathan

注釈を追加する必要があります@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
4
T. AKROUT

複雑なSymfony設定を使用している場合は、doctrine.orm.entity_managers.default.mappingsconfig.yml設定値を確認してください。おそらく、機能しない場合は、ここに新しいバンドルを追加する必要があります。

0
Mehmet Soylu