Laravel: Introduction à Eloquent
Présentation de l'ORM Eloquent
Eloquent est l'ORM (Object-Relational Mapper) intégré au framework Laravel. Il permet de gérer les interactions avec la base de données de manière élégante et intuitive en utilisant des modèles qui représentent les tables et les relations de la base de données. Eloquent simplifie la manipulation des données en encapsulant des requêtes SQL complexes dans une syntaxe expressive et facile à lire.
Installation et configuration
Eloquent est intégré par défaut dans Laravel. Après avoir installé Laravel via Composer, vous n'avez besoin d'aucune configuration supplémentaire pour utiliser Eloquent.
composer create-project --prefer-dist laravel/laravel blog
La configuration de la base de données se fait dans le fichier .env :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nom_de_la_base
DB_USERNAME=utilisateur
DB_PASSWORD=mot_de_passe
Modèles Eloquent
Création et définition des modèles
Pour commencer à utiliser Eloquent, vous devez créer un modèle. Un modèle dans Eloquent est une classe PHP qui représente une table dans votre base de données.
php artisan make:model Post
Cette commande crée un fichier de modèle dans app/Models/Post.php.
Exemple de modèle de base :
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
}
Relations entre modèles
Eloquent facilite la gestion des relations entre les différentes tables de votre base de données.
Relation One-to-Many
Considérons une situation où un post peut avoir plusieurs commentaires. Pour définir cette relation, vous devez définir des méthodes dans vos modèles.
Modèle Post :
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
public function comments()
{
return $this->hasMany(Comment::class);
}
}
Modèle Comment :
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
public function post()
{
return $this->belongsTo(Post::class);
}
}
Utilisation des relations :
$post = Post::find(1);
$comments = $post->comments;
foreach ($comments as $comment) {
echo $comment->content;
}
Relation Many-to-Many
Considérons une situation où un utilisateur peut avoir plusieurs rôles et un rôle peut être attribué à plusieurs utilisateurs.
Modèle User :
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function roles()
{
return $this->belongsToMany(Role::class);
}
}
Modèle Role :
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class);
}
}
Utilisation des relations :
$user = User::find(1);
$roles = $user->roles;
foreach ($roles as $role) {
echo $role->name;
}
Conclusion
Laravel Eloquent est un outil puissant pour interagir avec votre base de données de manière élégante et intuitive. En utilisant des modèles et des relations, vous pouvez facilement manipuler vos données et garder votre code propre et maintenable.