没有为实体指定标识符/主键(...)每个实体必须具有标识符/主键

时间:2013-08-10 13:55:56

标签: symfony orm doctrine-orm doctrine many-to-many

我有Peticion个实体,但缺少某些内容,因为出现以下错误:

No identifier/primary key specified for Entity (...) Every Entity must have and identifier/primary key

这是实体代码:

<?php

namespace Project\UsuarioBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Peticion
 *
 * @ORM\Table(name="peticion")
 * @ORM\Entity
 */
class Peticion
{
    /**
     *
     * @ORM\Id
     * @ORM\ManyToMany(targetEntity="Project\UsuarioBundle\Entity\Usuario", inversedBy="usuNick2")
     * @ORM\JoinTable(name="USUARIO",
     *      joinColumns={@ORM\JoinColumn(name="USU_NICK_1", referencedColumnName="USU_NICK")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="USU_NICK_2", referencedColumnName="USU_NICK")}
     *      )
     */
    private $usuNick1;

    /**
     *
     * @ORM\Id
     * @ORM\ManyToMany(targetEntity="Project\UsuarioBundle\Entity\Usuario", mappedBy="usuNick1"))
     */
    private $usuNick2;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="PET_FECHA", type="date", nullable=false)
     */
    private $fecha;

3 个答案:

答案 0 :(得分:17)

您需要指定 id 字段并删除其他@ORM\Id注释。 Identifiers / Primary Keys在学说文档中。

  

每个实体类都需要一个标识符/主键。你指定了   用作@Id标记注释的标识符的字段。

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

答案 1 :(得分:0)

就我而言,发生了什么事:

我创建实体文件,并将其放在具有数据库架构的实体目录中。

但事情就是这样,我还创建了一个实体的YML文件并将其放在Resources / config / doctrine中,没有架构。 Symfony正在寻找YML内部的架构。删除YML文件后,我的实体文件中的模式运行正常。

答案 2 :(得分:0)

解决方案是将id字段添加到EntityName.orm.yml id:true 例如: AppBundle \ Entity \ Supplier:    type: entity    table: sylius_supplier    fields:      id:        type: integer        id: true        generator:          strategy: AUTO      name: .......