Нет идентификатора/первичного ключа, указанного для Entity (...). Каждый объект должен иметь и идентификатор/первичный ключ
У меня есть объект 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;
Ответы
Ответ 1
Вам нужно указать поле id и удалить другие аннотации @ORM\Id
. Идентификаторы/Первичные ключи в документации по доктринам.
Каждому классу сущностей нужен идентификатор/первичный ключ. Вы назначаете поле, которое служит идентификатором с аннотацией маркера @Id.
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
Ответ 2
Решение состоит в том, чтобы добавить поле id в EntityName.orm.yml id: true
Например:
AppBundle \ Entity \ Supplier:
type: entity
table: sylius_supplier
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
name: .......
Ответ 3
В моем случае произошло следующее:
Я создаю файл сущности и помещаю его в каталог сущности с помощью схемы базы данных.
Но вот что я создал, создал файл YML для объекта и поместил его в Resource/config/doctrine без схемы. Symfony искал схему внутри YML. Как только я удалил YML файл, схема в файле сущности работала нормально.