> For the complete documentation index, see [llms.txt](https://akyos.gitbook.io/book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://akyos.gitbook.io/book/wordpress/akyos-x-core/wrappers/querybuilder.md).

# QueryBuilder

Le wrapper QueryBuilder permet d'effectuer des requêtes grace à l'API [WP\_Query](https://developer.wordpress.org/reference/classes/wp_query/) de Wordpress en orienté objet. En effet, il s'agit d'une couche d'abstraction à la fonction [wp\_query()](https://capitainewp.io/formations/developper-theme-wordpress/wp-query/) permettant d'offrir un fonctionnement plus proche de ce que l'on pourrait voire dans un framework type Laravel ou Symfony.

Exemple d'utilisation :

```php
$events = QueryBuilder::make('event')
              ->orderByACF('date_start', ASC)
              ->where('status', '=', 'open')
              ->limit(6)
              ->get()
```

Ici, on crée un QueryBuilder pour le post type `event` , que l'on va ordonner via le champ ACF `date_start` dans l'ordre `ASC`. On indique aussi que l'on veut que le champ `status` ait la valeur `open`, puis on limite le nombre de résultat attendu a 6, enfin, on exécute la requête.

> Il est **fortement** recommandé d'utiliser le QueryBuilder seulement dans le traitement de données, comme dans un [Composer](broken://pages/NlzRNSh6VdVtD7tCsqFx), ou encore un [Controller](/book/wordpress/akyos-x-core/wrappers/router-route-controller.md), mais ne doit en aucun cas être utilisé directement dans un fichier [Blade](broken://pages/2CbUEOrDLxVnvrYwnFRS) !

### Liste de toutes les méthodes

| Méthode                | Arguments                                                                                           | Description                                                                                                                                                                  |
| ---------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `all()`                | /                                                                                                   | Récupère toutes les occurence du post type sélectionné                                                                                                                       |
| `limit()`              | int `limit`                                                                                         | Limite le nombre de résultat retourné par la requête                                                                                                                         |
| `orderBy()`            | <p>string <code>value</code><br>string <code>order</code></p>                                       | Permet d'ordonner les résultat via un champ natif Wordpress                                                                                                                  |
| `orderByACF()`         | <p>string <code>meta\_key</code><br>string <code>order</code><br>(opt) string <code>type</code></p> | Permet d'ordonner les résultat via un champ ACF                                                                                                                              |
| `offset()`             | int `offset`                                                                                        | Permet de démarrer la query à partir d'un certain offset                                                                                                                     |
| `where()`              | <p>string <code>key</code></p><p>string <code>operator</code><br>mixed <code>value</code></p>       | Permet de rajouter une condition dans la requête                                                                                                                             |
| `andWhere() / orWhere` | <p>string <code>key</code></p><p>string <code>operator</code><br>mixed <code>value</code></p>       | Permet de chainer plusieurs condition dans la requête                                                                                                                        |
| `category()`           | string `category`                                                                                   | <p>Permet d'ajouter une condition sur la catégorie à laquelle doit appartenir le post.<br>/!\ Fonctionne uniquement sur le post type <code>post</code> natif a Wordpress</p> |
| `category()`           | string `taxonomy`                                                                                   | Permet d'ajouter une condition sur la taxonomy à laquelle doit appartenir le post.                                                                                           |
| `get()`                | /                                                                                                   | Execute la requête et renvoie la liste de post trouvés                                                                                                                       |
| `page()`               | int `page`                                                                                          | Récupère les posts d'une page en particulier                                                                                                                                 |
| `findWord()`           | string `$word`                                                                                      | Récupère les posts qui ont dans leur titre/contenu un mot                                                                                                                    |
