Insertions en base de données

Dans ce tutoriel nous allons insérer nos premières lignes en base de données via Eloquent.

Si vous utilisiez simplement PHP pour votre application, vous devriez avoir à écrire vos requêtes SQL à la main. Ce n'est pas le cas avec Laravel qui fournit un outil, Eloquent, qui permet, dans la majorité des cas, d'utiliser de simples fonctions PHP à la place de requêtes SQL.

Création du modèle

Eloquent fonctionne avec un système de modèle. Un modèle est une simple classe PHP qui représente une table de notre application. Nous allons créer le fichier Utilisateur.php de cette classe dans le dossier app qui contiendra toutes nos classes PHP.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Utilisateur extends Model {

}

Nous héritons via extends des fonctionnalités de Eloquent. La classe est également nommée Utilisateur par convention afin de correspondre au nom de la table au singulier.

Utilisation du modèle

Pour créer un utilisateur, c'est très simple, nous avons simplement à ajouter les données comme attributs de l'objet.

$utilisateur = new App\Utilisateur;
$utilisateur->email = request('email');
$utilisateur->mot_de_passe = request('password');

Dans cet exemple ->email et ->mot_de_passe correspondent au nom des colonnes de notre table. Tandis que 'email' et 'passwor' correspondent au nom des champs input HTML. À ce point, l'utilisateur n'est pas encore stocké en base de données, il est simplement dans la mémoire de PHP. Pour le sauvegarder, nous avons simplement à rajouter la ligne :

$utilisateur->save();

Pour tester l'insertion, vous pouvez vous rendre sur http://localhost:8000/inscription, remplir le formulaire puis observer la table utilisateurs via DB Browser for SQLite.

Sécurisation du mot de passe

Nous observons que le mot de passe que vous avez entré dans le formulaire est visible, en clair, dans la base de données. C'est une très grosse faille de sécurité. Pour résoudre ce problème, nous devons masquer le mot de passe via un algorithme de hashage. Laravel fournit une fonction pour masquer les mots de passe, pour l'utiliser, il suffit de mettre à jour notre fichier routes/web.php :

$utilisateur = new App\Utilisateur;
$utilisateur->email = request('email');
$utilisateur->mot_de_passe = bcrypt(request('password'));

$utilisateur->save();

En renvoyant à nouveau le formulaire, le nouveau mot de passe est maintenant incompréhensible. Nous verrons dans une future vidéo sur l'authentification comment vérifier que cette chaîne de caractère incompréhensible correspond bien au mot de passe de l'utilisateur.

Dans les prochains tutoriels, nous simplifierons le code pour l'insertion et nous utiliserons une autre fonctionnalité d'Eloquent permettant de récupérer les données depuis notre base de données.