Laravel

Query Builder / Eloquent

(Constructeur de requête)

Documentation

Permet de faire des requêtes pour retrouver des enregistrements dans la base de données

Retrouver tous les enregistrements

$posts = Post::get();
Code dans la vue pour afficher les titres des articles
foreach ($posts as $post) {
    echo $post->title;
}

Retrouver un enregistrement

$post = Post::where('title', 'Titre de mon article')->first();
Code dans la vue pour afficher le résultat
echo $post->title;

Si on veut seulement une valeur, comme la date de création par exemple

$post = Post::where('title', 'Titre de mon article')->value('created_at');

Récupérer une liste de valeur

$titles = Post::pluck('title');
Code dans la vue pour afficher le résultat
foreach ($titles as $title) {
    echo $title;
}

Fonction d'agrégation

$posts = Post::count();
$posts = Post::max('created_at');
$posts = Post::min('created_at');
Il y a aussi avg pour calculer la moyenne et sum pour la calculer la somme.

Select

Sélectionne seulement le titre et la date de création et renomme la date de création par “date”

$posts = Post::select('title', 'created_at as date')->get();

Where

Sélectionne des enregistrements suivant des conditions

$posts = Post::where('title', '=', 'article 1')->get();
$posts = Post::where('title', 'article 1')->get(); // le signe = peut être enlevé

$posts = Post::where('title', 'LIKE', 'article%')->get();

$posts = Post::where('created_at', '<', '2019-03-25')->get();
$posts = Post::where('created_at', '>', '2019-03-25')->get();

//On peut aussi passer un tableau de condition dans le Where
$posts = Post::where([
    ['title', '=', 'mon article'],
    ['created_at', '>', '2018-03-25']
])->get();
    

Autres exemples avec Where ⇒ https://laravel.com/docs/5.2/queries#where-clauses

Order

Classe les titres de articles par ordre alphabétique

$posts = Post::orderBy('title', 'asc')->get();

Classe les titres de articles par date de création

$posts = Post::latest()->get(); // plus récent en premier
$posts = Post::oldest()->get(); // plus vieux en premier
latest() et oldest() utilisent le champ created_at pour classer les éléments.

C'est un raccourci pour orderBy('created_at', 'asc')