1

SF2 と Doctrine に奇妙な問題があります。app.php からアプリを実行しようとすると、次のようになります。

[2013-01-31 15:40:05] request.CRITICAL: Doctrine\ORM\Mapping\MappingException: No identifier/primary key specified for Entity 'ACME\MyBundle\Entity\MyEntity'. Every Entity must have an identifier/primary key. (uncaught exception) at /lib/Doctrine/ORM/Mapping/MappingException.php line 37 [] []

これはかなり自明のようです。しかし、私が見る限り、私は自分のエンティティに主キーを持っています:

私のエンティティ:

/**
* @ORM\Entity
* @ORM\Table(name="milestone")
*/
class MyEntity
{

   /**
    * @ORM\Id
    * @ORM\Column(type="integer")
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    protected $id;

   /**
    * @ORM\Column(type="string")
    * @Assert\NotBlank()
    * @Assert\MinLength(2)
    * @Assert\MaxLength(100)
    */
    protected $title;

   /**
    * @ORM\Column(type="datetime")
    * @Assert\NotBlank()
    */
    protected $date;
   //////ETC

そして、PHPMyAdmin で:

        Action          Keyname Type    Unique  Packed  Column  Cardinality Collation   Null    Comment
 Edit    Drop   PRIMARY BTREE   Yes No  id  63  A   

私は主キーを持っています。非は NULL です。

app_dev.php を使用して実行すると、アプリは正常に実行されます。エラーが抑制されていると想定しています。

4

2 に答える 2

0

これを使ってみてください。それは私のために働いています

/**
     * @var integer $id
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
于 2013-02-01T01:12:06.990 に答える
0

フィールドをnull不可に設定することをお勧めします。

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
 protected $id;

いずれにせよ、テーブルがあるので、非常に便利な教義の cli を使用していつでもエンティティ マップを生成できます。

php [path-to-doctrine]/doctrine orm:convert-mapping --filter="TableNameInCamelCase"  --namespace="[your-entity-namespace]" --force --from-database annotation [destination-path-of-entities]

ゲッターとセッターを生成するためのものさえあります。

于 2014-11-15T07:52:58.500 に答える