Так вот в чем дело.
Я запрашиваю базу данных с помощью Doctrine 2.5, и я хотел бы использовать для этого метод Doctrine createQuery (). Причина в том, что Doctrine 2 гидратирует результаты в стиле camelCase, а все имена столбцов отмечены подчеркиванием. И поскольку большинство простых запросов отлично работают с createQuery (или даже с построителем запросов), я хотел бы переместить все собственные запросы MySQL в DQL Doctrine (чтобы получить все результаты в camelCase, чтобы получить стандартизованные результаты). Либо так, либо вы, ребята, можете научить меня, как заставить Doctrine 2 возвращать результаты так же, как столбцы в базе данных ... xD
У меня такой запрос:
$sql = '
SELECT sp.*, so.user_id
FROM shop_order so
INNER JOIN shop_payment sp ON(so.payment_id=sp.id)
WHERE so.id = '.$orderID;
$stmt = $em->getConnection()->prepare($sql);
$stmt->execute();
$result = $stmt->fetch();
Это приводит к следующему результату:
Array
(
[id] => 14
[payment_type_id] => 2
[flag] => boleto_bb
[tid] =>
[billet] => 1
[parcel_quantity] =>
[cart_name_holder] =>
[cart_date_holder] => 1999-12-01
[cart_number_holder] => 0
[datecreated] => 2017-08-30 14:51:25
[dateupdate] => 2017-08-30 16:36:18
[status] => 2
[user_id] => 16
)
Но если я сделаю это так:
$query = $em->createQuery('
SELECT sp, so.userId
FROM ShopOrder so
INNER JOIN ShopPayment sp WITH (so.paymentId = sp.id)
WHERE so.id = ' . $orderID);
$result = $query->getArrayResult();
Получаю такой результат:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 14
[paymentTypeId] => 2
[flag] => boleto_bb
[tid] =>
[billet] => 1
[parcelQuantity] =>
[cartNameHolder] =>
[cartDateHolder] => DateTime Object
(
[date] => 1999-12-01 00:00:00.000000
)
[cartNumberHolder] => 0
[datecreated] => DateTime Object
(
[date] => 2017-08-30 14:51:25.000000
)
[dateupdate] => DateTime Object
(
[date] => 2017-08-30 16:36:18.000000
)
[status] => 2
)
[userId] => 16
)
)
Как я могу получить первый результат от метода createQuery?
Что ты конкретно имеешь ввиду?






Вы знаете, что сейчас запросы уязвимы для SQL-инъекции?