Symfony: Как извлечь данные из таблицы, которая не является сущностью - PullRequest
0 голосов
/ 31 января 2020

Я хотел бы знать, возможно ли использовать Doctrine для извлечения некоторых данных из таблицы, которая не является сущностью.

use Doctrine\DBAL\Driver\Connection;

$connection->fetchAll("SELECT ...");

Я пытался использовать пространство имен Connection. этот работает с моими сущностями, но не с таблицей, которую я хочу.

Этот код на самом деле работает, но я использую PDO для подключения к базе данных для выполнения запроса. Таким образом, запрос Ajax недостаточно быстр. И мой SQL запрос должен быть подготовлен во избежание нарушений безопасности.

Спасибо за вашу помощь

   /**
     * @Route("/api/search", name="map_api_search")
     */
    public function search(Connection $connection, Request $request, ObjectManager $manager) : Response {

        if($ajaxRequest = $request->getContent())
        {
            $requestContent = json_decode($ajaxRequest, true);

            $content = $requestContent["content"];

            $config = new \Doctrine\DBAL\Configuration();

            $connectionParams = array(
                'dbname' => 'smartport',
                'user' => 'root',
                'password' => '',
                'host' => '127.0.0.1:3306',
                'driver' => 'pdo_mysql',
            );

            $conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);

            // Prepare the query
            $sql = "SELECT nom, lon, lat, id FROM `chimie_stations2` WHERE nom LIKE '%$content%' AND aasqa = 'PACA'";
            // Execute SQL query
            $stmt = $conn->query($sql);
            //Prepare an array to push all the results from the query
            $results = array();
            // Processing...
            while($data = $stmt->fetch())
            {
                $results[] = $data; 
            } 

            if(($results)) {
                return new JsonResponse([
                    'result' => true,
                    'results' => json_encode($results),
                    ]);
            } else {
                return new JsonResponse([
                    'result' => false,
                ]);
            }
        }
    }

1 Ответ

0 голосов
/ 31 января 2020

Если вы хотите подготовить запрос SQL:

public function myFunction(EntityManager $entityManager) 
{
    $connection = $entityManager->getConnection();

    $sql = 'SOME SQL HERE';
    $stmt = $connection->prepare($sql);
    $stmt->execute();
    $stmt->fetchAll();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...