Я хочу получить массив значений из столбца id таблицы аукциона. Если бы это был необработанный SQL, я бы написал:
SELECT id FROM auction
Но когда я делаю это в Doctrine и выполняю:
$em->createQuery("SELECT a.id FROM Auction a")->getScalarResult();
Я получаю такой массив:
array(
array('id' => 1),
array('id' => 2),
)
Вместо этого я хотел бы получить такой массив:
array(
1,
2
)
Как я могу это сделать с помощью Doctrine?
php
doctrine-orm
Давид Охия
источник
источник
Начиная с PHP 5.5 вы можете использовать array_column для решения этой проблемы.
источник
Лучшее решение - использовать
PDO:FETCH_COLUMN
. Для этого вам понадобится специальный гидратор:Добавьте это в Доктрину:
И вы можете использовать это так:
Дополнительная информация: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#custom-hydration-modes
источник
Ответ Аскария элегантен, но остерегайтесь использования памяти!
array_map()
создает копию переданного массива и эффективно удваивает использование памяти. Если вы работаете с сотнями тысяч элементов массива, это может стать проблемой. Поскольку передача времени вызова PHP 5.4 по ссылке была удалена, вы не можете выполнятьВ этом случае вы можете пойти с очевидным
источник
Я думаю, что в Доктрине это невозможно. Просто преобразуйте массив результатов в нужную структуру данных с помощью PHP:
источник