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

try using this. It is working for me

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

我建议将该字段设置为不可为空。

/**
 * @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]

甚至还有一个用于生成 getter 和 setter。

于 2014-11-15T07:52:58.500 回答