Dans ce tutoriel nous allons configurer PHP et Laravel pour utiliser une base de données SQLite.
Laravel est compatible par défaut avec 4 types de bases de données : MySQL, PostgreSQL, SQLite et SQL Server. Vous avez sans doute l'habitude d'utiliser MySQL dans vos projets PHP mais pour ce tutoriel, nous allons utiliser SQLite car cette base de données est bien plus simple à installer et configurer.
Configuration de PDO SQLite
Afin que PHP puisse communiquer avec SQLite, vous devez activer l'extension PDO SQLite.
Ubuntu
Avec Ubuntu 17.10, vous devez installer le paquet php-pdo-sqlite
:
sudo apt install php-pdo-sqlite
macOS
Avec macOS Sierra, si vous avez suivi mon tutoriel précédent lors de l'installation de PHP, l'extension PDO SQLite est déjà activée par défaut.
Windows
Et avec Windows 10, vous devez activer l'extension dans le fichier php.ini
. Pour cela, ouvrez le fichier C:\PHP\php.init
avec le bloc note et trouvez la ligne ;extension=php_pdo_sqlite.dll
. Pour activer l'extension, il suffit d'enlever le point-virgule au début de la ligne.
Configurer Laravel
La configuration de la base de données avec Laravel se situe dans le fichier config/database.php
. Dans ce fichier, la clé default
permet de spécifier le type de base de données voulu. Par défaut, Laravel appelle la fonction env()
qui permet de récupérer une variable d'environnement. Une variable d'environnement est une variable propre à votre machine, sa valeur sera différente sur votre machine de test, sur votre serveur de production ou sur la machine d'un collègue. Même si il est possible d'enlever l'appel à la fonction env()
et simplement renseigner 'default' => 'sqlite'
, ce n'est pas considéré comme une bonne pratique. Nous allons plutôt modifier la variable d'environnement dans le fichier .env
situé à la racine du projet et remplacer DB_CONNECTION=mysql
par DB_CONNECTION=sqlite
.
Pour le reste de la configuration de SQLite, tout est dans le fichier config/database.php
. On peut d'ailleurs voir que les configurations possibles pour MySQL sont bien plus importantes que pour SQLite. Comme une base de données SQLite est un simple fichier, sans nom d'utilisateur, sans mot de passe, etc. nous n'avons qu'à spécifier le chemin vers le fichier dans la clé 'database' => env('DB_DATABASE', database_path('database.sqlite'))
. La valeur par défaut de cette configuration correspond au chemin chemin/vers/mon-projet/database/database.sqlite
. Ce chemin est correct, nous allons l'utiliser.
Donc pour terminer la configuration de notre application Laravel, nous avons simplement besoin de supprimer les variables d'environnement inutiles en supprimant toutes les lignes commencant par DB_*
dans le fichier .env
sauf la ligne DB_CONNECTION=sqlite
.
Création de la base de données
Pour tester notre installation nous pouvons lancer la commande php artisan migrate:status
. Cette commande nous retourne une erreur car la base de données n'existe pas. Cela est normal car le fichier database/database.sqlite
n'existe pas dans notre projet.
Pour créer la base de données, nous avons simplement besoin de créer un fichier vide database/database.sqlite
avec Atom par exemple.
En relançant la commande php artisan migrate:status
, le message « No migrations found. » devrait s'afficher. Ce message signifie que Laravel a bien réussi à se connecter à la base de données SQLite (donc que PHP et Laravel sont bien configurés) mais que cette base de données est vide. Nous verrons dans le prochain tutoriel comment créer nos tables dans la base de données.