1 Les requêtes¶
1.1 Effectuer une requête de lecture¶
1.1.1 L’objet Query¶
Une requête s’effectue en récupérant l’objet CCMBenchmark\Ting\Query\Query via le Repository.
Pour ce faire il suffit d’appeler :
$query = $this->getQuery('SELECT ...');
1.1.2 Les paramètres¶
Pour mettre des paramètres dynamiques dans la requête il faut utiliser la méthode « setParams » qui prend en argument un tableau associatif :
$query = $this->getQuery('SELECT id, name FROM user WHERE name = :name');
$query->setParams(['name' => 'Sylvain']);
1.1.3 Exécuter la requête¶
Pour retourner les données de lecture il faut utiliser la méthode « query » :
$query = $this->getQuery('SELECT id, name FROM user WHERE name = :name');
$query->setParams(['name' => 'Sylvain']);
$collection = $query->query();
1.1.4 Récupérer les résultats¶
La méthode « query » retourne un objet CCMBenchmark\Ting\Repository\Collection. Cet objet est un Iterator, vous pouvez donc récupérer les résultats de cette façon :
$query = $this->getQuery('SELECT id, name FROM user WHERE name = :name');
$query->setParams(['name' => 'Sylvain']);
$collection = $query->query();
foreach ($collection as $data) {
print_r($data);
}
1.1.5 Explication sur le format retourné¶
Voir la documentation concernant les hydrateurs
1.1.6 Format de retour simplifié pour des requêtes sans jointures¶
Voir la documentation concernant l”hydration pour un seul objet
1.1.7 Compter les éléments d’une collection¶
Il faut savoir qu’une Collection implémente l’interface standard Countable. Vous pouvez donc savoir combien elle a d’éléments comme vous le faites pour un tableau PHP : count($collection);
1.1.8 Exécuter une requête sur le master¶
Une requête de lecture s’effectuera par défaut sur un des slaves configurés (si des slaves ont été configurés), si vous avez besoin d’effectuer votre requête sur le master, alors il faut appeler la méthode « selectMaster » :
$query = $this->getQuery('SELECT ...');
$query->selectMaster(true);
1.1.9 Erreur sur une requête¶
Si la requête exécutée ne se termine pas correctement, une exception du type CCMBenchmark\Ting\Driver\QueryException sera levée
1.2 Effectuer une requête d’écriture¶
La logique reste la même que pour une requête de lecture, à quelques différences près. Il faut appeler la méthode « execute » sur l’objet CCMBenchmark\Ting\Query\Query
$query = $this->getQuery('INSERT INTO ...');
$query->execute();