Возврат массива объектов из PDO

у меня есть класс PHP (POJO_FOO), который сопоставляется с таблицей (TABLE_FOO).

например, одна строка равна одному объекту этого класса.

теперь я пишу менеджер, который возвращает массив таких объектов, соответствующих определенному запросу. Используя PDO, Как я могу вернуть массив объектов ?

когда я делаю простой fetchAll, он возвращает массив (количество результатов) ассоциативный массив (column =>value). Есть ли опция в fetchALL что может дать мне результат в виде массива объектов ?

1 ответов


вы можете использовать PDO:: FETCH_CLASS для гидратации вашего класса с вашими данными:

return $pdo->query('SELECT * FROM tablefoo')->fetchAll(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE,'POJO_FOO');

также полезно использовать PDO::FETCH_CLASS|PDO:: FETCH_PROPS_LATE, потому что это делает конструкцию объекта более согласованной. Habitualy ваш конструктор вызывается прежде всего. Если вы не используете FETCH_PROPS_LATE, он будет вызван после того, как ваши свойства будут увлажнены.