Запрос MySQL с Doctrine 2 и разные результаты

Так вот в чем дело.

Я запрашиваю базу данных с помощью 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-инъекции?

Raymond Nijland 16.04.2018 13:49

Что ты конкретно имеешь ввиду?

felipetnh 16.04.2018 13:51
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
78
0

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