【问题标题】:No identifier/primary key specified for Entity (...) Every Entity must have and identifier/primary key没有为实体指定标识符/主键 (...) 每个实体都必须具有标识符/主键
【发布时间】:2013-08-12 07:46:42
【问题描述】:

我有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;

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 这是不正确的,Doctrine 应该使用复合 ID(多个 ID)并且变量不需要是 $id
    • 我发现@ORM\Column(type="integer") 很重要。我正在使用 Doctrine 2.7。
    【解决方案2】:

    就我而言,发生的事情是这样的:

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

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

    【讨论】:

      【解决方案3】:

      解决方法是在EntityName.orm.yml中添加id字段id: true 例如:

      AppBundle \ Entity \ Supplier:
         type: entity
         table: sylius_supplier
         fields:
           id:
             type: integer
             id: true
             generator:
               strategy: AUTO
           name: .......
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-06
        • 1970-01-01
        • 1970-01-01
        • 2015-07-25
        • 2016-01-31
        相关资源
        最近更新 更多