web-dev-qa-db-ja.com

エンティティに識別子/主キーが指定されていません(...)すべてのエンティティに識別子/主キーが必要です

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;
14
user2359967

idフィールドを指定し、他の@ORM\Idアノテーションを削除する必要があります。 識別子/主キー at doctrineドキュメント。

すべてのエンティティクラスには、識別子/主キーが必要です。 @Idマーカーアノテーションを使用して、識別子として機能するフィールドを指定します。

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

解決策は、EntityName.orm.ymlにidフィールドを追加することですid:true例:

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

私の場合、起こったことはこれでした:

エンティティファイルを作成し、データベーススキーマと共にエンティティディレクトリに配置します。

しかし、ここでは、エンティティ用のYMLファイルを作成し、スキーマなしでResources/config/doctrineに配置しました。 symfonyはYML内のスキーマを探していました。 YMLファイルを削除すると、エンティティファイルのスキーマは正常に機能しました。

0