Ошибка при работе с 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