Korišćenje u klasi
Upiti se mogu izvlačiti u objekte zasnovane na korisničkim klasama. Na primer, ako imamo klasu pod nazivom ExampleClass, sledeći upit će vratiti objekte tipa ExampleClass.
$result = $connection->query("SELECT id, title FROM {example_table}", [], [
'fetch' => 'ExampleClass',
]);
Ako klasa ima metod __construct(), objekti će biti kreirani, svojstva će biti dodata objektu, a zatim će biti pozvan metod __construct(). Na primer, ako imate sledeću klasu i upit.
class ExampleClass {
function __construct() {
// Uradi nešto
}
}
$result = $connection->query("SELECT id, title FROM {example_table}", [], [
'fetch' => 'ExampleClass',
]);
Objekat će biti kreiran, svojstva id i title će biti dodata objektu, a zatim će biti izvršen __construct(). Redosled ovih događaja povezan je sa bagom u PHP-u za verzije manje od 5.2.
Ako objekat ima metod __construct() koji treba izvršiti pre dodavanja svojstava objektu, sledeći primer pokazuje kako to uraditi.
$result = $connection->query("SELECT id, title FROM {example_table}");
foreach ($result->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'ExampleClass') as $record) {
// Uradi nešto
}
Argumenti koji se prosleđuju u fetchAll mogu se koristiti na isti način. PDO::FETCH_CLASS govori fetchAll da uzme vraćeni skup rezultata i doda vrednosti kao svojstva objektu tipa ExampleClass (drugi argument). PDO::FETCH_PROPS_LATE govori fetchAll da doda skup rezultata kao svojstva objektu nakon poziva __construct().