Вывести значение внешнего ключа в Symfony в Doctrine в QueryBuilder-е
Допустим есть таблицы Post и Tag со следующей структурой.
Author
| Название поля | Тип поля | Описание поля |
|---|---|---|
| id | autoincrement | id записи |
| name | varchar(255) | Имя автора |
Post
| Название поля | Тип поля | Описание поля |
|---|---|---|
| id | autoincrement | id записи |
| title | varchar(255) | Название поста |
| text | text | Текст поста |
| author_id | FK(foreign key, int) | Id автора |
И теперь нужно, например, в запросе вывести данные поста вместе с автором, значение которого представляет из себя внешний ключ. То есть в сущности это поле представляет из себя связь relation типа ManyToOne с названием author(то есть у одного поста может быть один автор, у одного автора может быть много постов). Сделать это можно следующим образом:
return $this->createQueryBuilder('p')
->select('p.id', 'p.title', 'IDENTITY(p.author) as author_id')
->getQuery()
->getResult()
;
с помощью недокументированной функции IDENTITY, которая позволяет выбрать значение внешнего ключа в запросе.
Полезные ссылки
- https://stackoverflow.com/questions/14216470/symfony2-and-doctrine-error-invalid-pathexpression-must-be-a-statefieldpathe - спасибо очередное Stackoverflow-у