Doctrine DBAL
  1. Doctrine DBAL
  2. DBAL-196

The function fetchAll(PDO::FETCH_ALL, 'MyClass') doesn't create object of MyClass

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.2
    • Component/s: None
    • Security Level: All
    • Labels:
      None

      Description

      The code below doesn't create objects of MyClass when it has to.
      Instead it create StdClass objects

      $stmt = $db->prepare($sql);
      $stmt->execute();
      
      $results = $stmt->fetchAll(
          \PDO::FETCH_CLASS,
          'MyClass'
      );
      

      The problem comes from the file Doctrine/DBAL/Statement.php

          /**
           * Returns an array containing all of the result set rows.
           * 
           * @param integer $fetchStyle
           * @param integer $columnIndex
           * @return array An array containing all of the remaining rows in the result set.
           */
          public function fetchAll($fetchStyle = PDO::FETCH_BOTH, $columnIndex = 0)
          {
      	if ($columnIndex != 0) {
                  return $this->_stmt->fetchAll($fetchStyle, $columnIndex);
              }
              return $this->_stmt->fetchAll($fetchStyle);
          }
      

      The line

      if ($columnIndex != 0) {
      

      must be replace by

      if ($columnIndex !== 0) {
      

      because the parameter $columnIndex is not always an integer and could be a name of a class : see the example n°4 in php doc http://www.php.net/manual/en/pdostatement.fetchall.php

        Activity

        Hide
        Benjamin Eberlei added a comment -

        Fixed and merged into 2.2

        Show
        Benjamin Eberlei added a comment - Fixed and merged into 2.2

          People

          • Assignee:
            Fabio B. Silva
            Reporter:
            Antoine Froger
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: