Мне нужно выполнить этот 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, поэтому мало что знаю.
а есть промежуточный результат? fetchAll что-то возвращает?
"FOR JSON AUTO" работает на сервере mysql?
Хорошо, извините за то, что не ответил на это, во-первых, FOR JSON AUTO не работает на Mysql, а во-вторых, код в порядке, это был я все время, я вводил неправильный URL-адрес. Я просто удалю вопрос и скрою. Спасибо за вашу помощь!!






Это способ, но не рекомендуемый, а способ:
$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_
Вы не можете установить метод в репозитории Annoucement, который возвращает -> getArrayResult (), а в вашем контроллере создает json_encode результата?