Qu'est-ce qu'Eloquent ORM et pourquoi en a-t-on besoin ?
\n\nEloquent ORM (Object-Relational Mapping) est une bibliothèque intégrée pour travailler avec des bases de données dans le framework PHP Laravel. Elle offre une manière élégante et intuitive d'interagir avec les bases de données relationnelles (MySQL, PostgreSQL, SQLite, SQL Server) en utilisant le modèle Active Record.
\n\nPourquoi Eloquent est-il nécessaire ?
\n- \n
- Abstraction SQL : Au lieu d'écrire des requêtes SQL brutes, vous travaillez avec des objets PHP. Cela rend le code plus propre, plus lisible et plus sûr. \n
- Active Record : Chaque modèle Eloquent représente une table dans la base de données. Une instance de modèle est une ligne dans cette table. Vous pouvez lire, modifier et sauvegarder des données simplement en manipulant les propriétés de l'objet. \n
- Protection contre les injections SQL : Eloquent utilise PDO (PHP Data Objects) avec des requêtes préparées, ce qui échappe automatiquement les entrées utilisateur. \n
- Relations : Définir et utiliser facilement les liens entre les tables (un à un, un à plusieurs, plusieurs à plusieurs, etc.). \n
- Collections : Les résultats des requêtes sont retournés sous forme de collections — des objets puissants qui offrent de nombreuses méthodes utiles pour le traitement des données (map, filter, reduce, pluck, etc.). \n
- Mutateurs et Accesseurs : Permettent de transformer les données lors de la sauvegarde (mutateurs) ou de la lecture (accesseurs) depuis la base de données. \n
Eloquent n'est pas simplement une bibliothèque, c'est une partie fondamentale de l'écosystème Laravel. Comprendre Eloquent est essentiel pour un développement efficace avec ce framework.
\n\nInstallation
\n\nEloquent ORM s'installe automatiquement avec le framework Laravel. Si vous créez un nouveau projet Laravel, Eloquent est déjà prêt à être utilisé.
\n\nInstallation via Composer (si vous utilisez Laravel) :
\ncomposer create-project laravel/laravel example-app\ncd example-app\n\nInstallation d'Eloquent sans Laravel (Standalone) :
\nVous pouvez utiliser Eloquent en dehors de Laravel, par exemple dans votre propre projet. Pour cela, vous devrez installer le paquet illuminate/database et configurer la connexion à la base de données.
composer require illuminate/database\ncomposer require illuminate/events // Pour travailler avec les événements de modèles (optionnel)\n\nExemple de configuration de connexion (standalone) :
\n<?php\nrequire 'vendor/autoload.php';\n\nuse Illuminate\\Database\\Capsule\\Manager as Capsule;\n\n$capsule = new Capsule;\n\n$capsule->addConnection([\n 'driver' => 'mysql',\n 'host' => 'localhost',\n 'database' => 'your_database',\n 'username' => 'your_username',\n 'password' => 'your_password',\n 'charset' => 'utf8',\n 'collation' => 'utf8_unicode_ci',\n 'prefix' => '',\n]);\n\n// Configuration de l'instance globale d'Eloquent\n$capsule->setAsGlobal();\n\n// Démarrage d'Eloquent\n$capsule->bootEloquent();\n\n\nDémarrage rapide avec un exemple de code
\n\nSupposons que nous ayons une table users dans la base de données. Créons un modèle Eloquent pour travailler avec elle.
Étape 1 : Création du modèle
\nDans Laravel, les modèles sont généralement stockés dans app/Models. Créons un fichier User.php :
<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass User extends Model\n{\n // Eloquent liera automatiquement ce modèle à la table 'users'\n // Le nom de la table est déterminé par le nom de la classe au pluriel (snake_case)\n // Si la table s'appelle différemment, indiquez la propriété $table\n // protected $table = 'my_users';\n\n // Indiquez les champs qui peuvent être remplis en masse (pour la protection contre l'assignation massive)\n protected $fillable = ['name', 'email', 'password'];\n}\