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();