2 votes

Comment puis-je empêcher Doctrine de citer des chiffres ?

J'essaie d'exécuter une requête SQL native à l'aide de doctrine et je rencontre des problèmes lorsqu'il s'agit de citer les nombres pour le champ LIMIT partie de ma requête.

    $offset = $pageNumber * self::$limit;

    $sql = "
        SELECT * FROM devices LIMIT :offset, :limit
    ";
    $stmt = self::getEntityManager()->getConnection()->prepare($sql);
    $stmt->bindValue("offset", $offset);
    $stmt->bindValue("limit", self::$limit);
    $stmt->execute();
    $result = $stmt->fetchAll();

Génère :

SELECT * FROM devices LIMIT '0', '5000'

Ce qui n'est pas valable. Je suis un peu perplexe quant à la façon dont je peux modifier ceci pour produire :

SELECT * FROM devices LIMIT 0, 5000

J'ai fait référence recherche et manipulation de données qui comporte une section sur le quote() fonctions, mais il est timide sur les détails.

2voto

Bogdan Burim Points 3658

Essayez :

$stmt->bindValue("offset", $offset, PDO::PARAM_INT);

Voir la source aquí :

 28: class MysqliStatement implements \IteratorAggregate, Statement
 29: {
 30:     protected static $_paramTypeMap = array(
 31:         PDO::PARAM_STR => 's',
 32:         PDO::PARAM_BOOL => 'i',
 33:         PDO::PARAM_NULL => 's',
 34:         PDO::PARAM_INT => 'i',
 35:         PDO::PARAM_LOB => 's' // TODO Support LOB bigger then max package size.
 36:     );

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X