15

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

3 回答 3

18

您需要指定id字段并删除其他@ORM\Id注释。学说文档中的标识符/主键

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

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;
于 2013-08-10T16:36:39.067 回答
1

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

AppBundle \ Entity \ Supplier:
   type: entity
   table: sylius_supplier
   fields:
     id:
       type: integer
       id: true
       generator:
         strategy: AUTO
     name: .......
于 2018-09-04T07:31:46.597 回答
0

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

我创建实体文件,并将其与数据库模式一起放在实体目录中。

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

于 2018-02-09T22:54:56.743 回答