Как использовать преобразование типов 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
,