SQL-запрос в контроллере Symfony

Мне нужно выполнить этот SQL-запрос в контроллере класса в symfony:

SELECT * FROM Announcement INNER JOIN User ON Announcement.userId=User.userId

Он отлично работает на phpmyadmin, и я попытался сделать это на своем контроллере класса следующим образом:

$helpers = $this->get("app.helpers");
$em = $this->getDoctrine()->getManager();
$connection = $em->getConnection();
$statement = $connection->prepare("SELECT * FROM Announcement INNER JOIN User ON Announcement.userId=User.userId FOR JSON AUTO");
$statement->execute();
return $helpers->json($statement->fetchAll());

Но возвращается null. Что я делаю неправильно. Я новичок в Symfony, поэтому мало что знаю.

Вы не можете установить метод в репозитории Annoucement, который возвращает -> getArrayResult (), а в вашем контроллере создает json_encode результата?

Pec 27.04.2018 09:31

а есть промежуточный результат? fetchAll что-то возвращает?

FloydThreepwood 27.04.2018 10:18

"FOR JSON AUTO" работает на сервере mysql?

Pec 27.04.2018 11:01

Хорошо, извините за то, что не ответил на это, во-первых, FOR JSON AUTO не работает на Mysql, а во-вторых, код в порядке, это был я все время, я вводил неправильный URL-адрес. Я просто удалю вопрос и скрою. Спасибо за вашу помощь!!

JCAguilera 30.04.2018 17:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
397
1

Ответы 1

Это способ, но не рекомендуемый, а способ:

     $sql = "SELECT * FROM Announcement INNER JOIN User ON Announcement.userId=User.userId FOR JSON AUTO";
    $conn = $this->container->get('doctrine')->getEntityManager()->getConnection();
    $params = $conn->getParams();
    $paramHost = $params['host'];
    $paramPort = $params['port'];
    $paramDb = $params['dbname'];
    $paramUser = $params['user'];
    $paramPass = $params['password'];
    $myConn = "host=$paramHost port=$paramPort dbname=$paramDb user=$paramUser password=$paramPass";
    $conn = pg_connect($myConn);
    pg_query($sql);
    pg_close($conn);

Обратите внимание, что pg_ предназначен для postgres, для mysql вместо этого используйте mysqli_

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