Home >Database >Mysql Tutorial >How to Execute Raw SQL Queries in Doctrine 2?

How to Execute Raw SQL Queries in Doctrine 2?

Linda Hamilton
Linda HamiltonOriginal
2025-01-03 15:25:43331browse

How to Execute Raw SQL Queries in Doctrine 2?

Execute Raw SQL using Doctrine 2

In Doctrine 2, it is possible to execute raw SQL queries, particularly when dealing with tasks such as truncating database tables or initializing them with test data. To achieve this, the Doctrine Query Language (DQL) can be utilized to construct the necessary queries.

Executing Raw SQL Queries

To execute a raw SQL query using Doctrine 2, the following steps can be followed:

  1. Obtain the EntityManager object.
  2. Retrieve the underlying database connection from the EntityManager.
  3. Prepare the SQL statement using the prepared statement functionality offered by the PDO object.
  4. Execute the prepared statement.

Example

Consider the following example, where the goal is to retrieve authoritative sports records using a raw SQL query:

public function getAuthoritativeSportsRecords()
{
    $sql = "
        SELECT
            name,
            event_type,
            sport_type,
            level
        FROM
            vnn_sport
    ";

    $em = $this->getDoctrine()->getManager();
    $stmt = $em->getConnection()->prepare($sql);
    $stmt->execute();
    return $stmt->fetchAll();
}

In this example:

  • The $sql variable contains the raw SQL query to be executed.
  • The prepare() method is used to create a prepared statement, which is stored in the $stmt variable.
  • The execute() method executes the prepared statement.
  • The fetchAll() method returns an array of all the rows in the result set.

The above is the detailed content of How to Execute Raw SQL Queries in Doctrine 2?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn