2014-12-15 2 views
0

При использовании PDO::FetchAll() в связи с PDO::Fetch_Class я не получаю все объекты обратно. Только один объект из 5 или 6.PDO FetchAll Fetch_Class не возвращает все строки/объекты

Например:

$as_object = 'Model_Menu'; $params = NULL;

$result->setFetchMode(PDO::FETCH_CLASS, $as_object, $params);

$result = $result->fetchAll();

Но использование $result->setFetchMode(PDO::FETCH_ASSOC); дает мне все строки в базе данных.

Im, используя Kohana, поэтому я не могу показать вам всю сборку самого запроса. Но верьте мне, что это работает, если fetch assoc получает весь результат с той же самой сборкой, он должен работать правильно?

Окружающая среда:

-Linux ubuntu 
-Driver: pdo/mssql/?ORM? 
-Framework: Kohana 

ответ

1

Может быть, потому что вы передаете третий аргумент ($params, который является нулевым), PDO принимает fetchmode быть PDO::FETCH_CLASS | PDO::FETCH_INTO, переназначения $params снова и снова. Помните, что PDO::FETCH_CLASS будет не вызов конструктора до после все свойства заданы. Чтобы сначала вызвать конструктор, вам необходимо установить режим выборки на PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE. Id»мерзавец этот Баш:

$result->setFetchMode(
    PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 
    $asObject 
); 
$objects = $result->fetchAll(); 

Глядя на документы, я также заметил, что большинство примеров выглядеть следующим образом:

$stmt->execute(); //<-- execute 
$rows = $stmt->fetchAll(PDO::FETCH_CLASS, 'ClassName');//pass fethcMode upon fetching