Laravel
Models Migration Relation
Introduction Installation Projet:Structure Strucutre,model,migration Migration,Models,Relation Artisan CLI Migrations:Exemples Models:Exemples Relations:Exemples 1 Relations:Exemples 2
Les Relations
BelongsTo HasOne HasMany BelongsToMany HasManyThrough
Exemples des Relations
Relations:oneToMany,ManyToMany... Relations:Exemples
Exercices
Exercice 1 Exercice 2
Controllers Views Routes
Routes,Controller,Model,view
Les Routes
Définir:Routes Routes avec Paramètres Routes nommées Groupes de routes
Les Controllers
Les Controllers Les Contrôleurs de Ressources
Les Vues
Vues et Blade Templates Blade Layouts et Sections Sous-vues Composants et Slots Contrôles de flux
MVC :CRUD
CRUD: Produit CRUD: Etudiant CRUD: Car CRUD,Recherche: Book
Validation
Exemple :Projets
ORM:Eloquent
Exemple :Transport
Api:Laravel +React
Middleware

Seeders & Factories
Exemples :EFM

Authenfication
TP:Schools Management
Authenfication:React
Layouts
Exercices





Utilisation des Sous-requêtes Laravel

Utilisation des Sous-requêtes Laravel

1. Utilisation de sous-requêtes dans les conditions

Les sous-requêtes peuvent être utilisées dans les conditions pour filtrer les résultats en fonction d'une autre requête.

Exemple:


        $highScores = DB::table('players')
 ->where('score', '>', function ($query) {
  $query->select('average_score')
  ->from('statistics')
  ->whereColumn('player_id', 'players.id')
  ->orderByDesc('created_at')
  ->limit(1);
 })
 ->get();

2. Utilisation de sous-requêtes dans les jointures

Les sous-requêtes peuvent également être utilisées dans les jointures pour récupérer des données basées sur une condition issue d'une autre table.

Exemple:


        $latestPosts = DB::table('posts')
 ->joinSub($latestComments, 'latest_comments', function ($join) {
  $join->on('posts.id', '=', 'latest_comments.post_id');
 })
 ->get();

3. Utilisation de sous-requêtes dans les sélections

Les sous-requêtes peuvent être utilisées pour sélectionner des données basées sur des conditions ou des valeurs d'autres tables.

Exemple:


        $popularPosts = DB::table('posts')
 ->select('title',
  DB::raw('(SELECT COUNT(*) FROM likes WHERE likes.post_id = posts.id) as likes_count'))
 ->orderByDesc('likes_count')
 ->get();

Opérateur whereHas

L'opérateur whereHas permet de filtrer les modèles en fonction de la présence d'une relation spécifique.

Exemple :

$posts = Post::whereHas('comments', function ($query) {
    $query->where('status', 'approved');
})->get();

Opérateur orWhereHas

L'opérateur orWhereHas permet de filtrer les modèles en fonction de la présence d'une relation spécifique avec une condition "ou".

Exemple :

$posts = Post::orWhereHas('comments', function ($query) {
    $query->where('status', 'approved');
})->get();

Opérateur doesntHave

L'opérateur doesntHave récupère les modèles qui n'ont pas de relation spécifique.

Exemple :

$posts = Post::doesntHave('comments')->get();

Opérateur withCount

L'opérateur withCount permet de récupérer le nombre de relations liées à un modèle.

Exemple :

$posts = Post::withCount('comments')->get();
foreach ($posts as $post) {
    echo $post->title;
    echo $post->comments_count;
}

Opérateur whereColumn

L'opérateur whereColumn permet de comparer deux colonnes dans une table ou entre deux tables différentes.

Exemple :

$posts = Post::whereColumn('created_at', '>', 'updated_at')->get();

Opérateur orWhereColumn

L'opérateur orWhereColumn permet de comparer deux colonnes dans une table ou entre deux tables différentes avec une condition "ou".

Exemple :

$posts = Post::orWhereColumn('created_at', '>', 'updated_at')->get();