Как использовать преобразование типов Doctrine2 в собственных запросах КОЛОННЫ

Не могу ничего найти по этому поводу - похоже, все должно быть прямо вперед.

Таким образом, пример документов Doctrine2 для преобразования типов в связанных параметрах выглядит следующим образом:

$date = new \DateTime("2011-03-05 14:00:21");
$stmt = $conn->prepare("SELECT * FROM articles WHERE publish_date > ?");
$stmt->bindValue(1, $date, "datetime");
$stmt->execute();

Я хочу указать преобразование типа для одного из столбцов, но в документах или в Stackru ничего не найдено. Псевдо-пример того, как это может выглядеть:

$stmt = $conn -> prepare("SELECT datetime FROM articles WHERE id = 1");
$stmt -> setType(0, "date_type"); // 0 being the column position, "date_type" being the PHP type to convert to

Если кто-нибудь знает, как это сделать (это SQL, а не DQL), я был бы очень признателен. Спасибо.

1 ответ

Решение

Это не то, что работает на уровне DBAL. Если вы используете NativeSQL Queries в ORM, вы можете получить такое преобразование посредством гидратации (см. Раздел NativeSQL в документации Doctrine ORM), используя HYDRATE_ARRAY режим и отображение некоторых извлеченных полей на объект. Самое быстрое решение (если вы не собираетесь использовать ORM) - это перебрать результаты и применить преобразование типов вручную, открыв Doctrine\DBAL\Types\Type::getType($someType)->convertToPhpValue($fetchedValue), Это может быть ценным дополнением к ORM, чтобы иметь возможность указать третий параметр, определяющий извлеченный тип в Doctrine\ORM\Query\ResultSetMapping#addScalarResult,

Другие вопросы по тегам