Вывести значение внешнего ключа в 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-у