Ошибка при работе с Doctrine: No identifier/primary key specified for Entity


При работе с Doctrine 2 возникла ошибка: No identifier\/primary key specified for Entity … Every Entity must have an identifier/primary key. Выполнялся запрос с помощью QueryBuilder-а. В общем-то, суть даже не в этом. Таблица, которую описывала одна из сущностей не имела уникального идентификатора id (primary key), «промежуточного» типа, где всего пару колонок и каждая из них ссылается на определенный идентификатор из других таблиц (внешний ключ).

Например, есть два поля: role_id (ссылается на id из таблицы roles) и user_id (ссылается на поле id из таблицы users). Но для Doctrine в сущности нужен какой-то уникальный идентификатор. Чтобы решить проблему, мы можем использовать в качестве такого identifier составной ключ из этих двух полей (их сочетание уникальное). Чтобы указать его в сущности нужно к обоим свойствам в док-блоке добавить аннотацию @Id. Пример:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
/**
 * Роли пользователей
 * @package Entity
 * @Table(name="roles_users")
 * @Entity
 */
class RolesUsers
{
    /**
     * @var integer $roleId
     * @Id
     * @Column(name="role_id", type="integer", nullable=false)
     */
    private $roleId;
 
    /**
     * @var integer $login
     * @Id
     * @Column(name="user_id", type="integer", nullable=false)
     */
    private $userId;
 
    ...
}
Другие посты

Категория: Doctrine

Оставить комментарий


Яндекс.Метрика