Avant de commencer à coder …
Dans le fichier .env
à la racine de Laravel, on renseigne les infos de notre projet :
APP_NAME=laravel-test APP_ENV=local APP_KEY=base64:ab5zqG/MDgyFFyjIp2uVELdR36f9xrRfj2ZOew4U8ZU= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://localhost
Pour le debug, ça ne suffit pas de l’indiquer dans .env
, on va également changer cette valeur dans le fichier config/app/php
pour avoir des erreurs plus explicites :
On va aussi se configurer une base de données dans le fichier config/database.php
. J’utilise ici mySQL donc je vérifie que c’est bien la connexion par défaut :
'default'=> env('DB_CONNECTION', 'mysql'),
Et je renseigne mes informations de connexion :
'mysql'=> [
'driver'=>'mysql',
'host'=> env('DB_HOST', '127.0.0.1'),
'port'=> env('DB_PORT', '3306'),
'database'=> env('DB_DATABASE', 'laravel-test'),
'username'=> env('DB_USERNAME', 'root'),
'password'=> env('DB_PASSWORD', ''), /* pour une sécurité accrue ;) */
'unix_socket'=> env('DB_SOCKET', ''),
'charset'=>'utf8',
'collation'=>'utf8_general_ci',
'prefix'=>'',
'strict'=>true,
'engine'=>null,
],
On va renseigner ces informations également dans le fichier .env sinon on aura des erreur avec les commandes artisan de migration.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel-test DB_USERNAME=root DB_PASSWORD=
Pour notre projet, on va avoir besoin de 2 tables simples qui seront :
- user
- post
Pour ce faire on va passer par les méthodes de migrations de Laravel. On va créer notre première migration avec artisan :
php artisan make:migration create_post_table
Ce qui nous crée un fichier dans le dossier database/migrations
Ici, il y a une méthode up()
qui est donc pour l’upgrade et une méthode down()
pour le rollback.
Créons les tables en commençant par modifier les tables fournit avec Laravel :
/* CreateUsersTable */ <?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('firstname'); $table->string('avatar_url'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); /* ajoute la date de creation et modification */ }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } }
/* CreatePasswordResetsTable */ <?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreatePasswordResetsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('password_resets', function (Blueprint $table) { $table->string('email')->index(); $table->string('token'); $table->timestamp('created_at'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('password_resets'); } }
/* CreatePostTable */ <?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function (Blueprint $table) { $table->increments('id'); $table->string('title', 300); $table->string('content'); $table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users'); $table->timestamps(); /* ajoute la date de création et modification */ }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('posts'); } }
On va jouer ces migrations avec la commande artisan :
php artisan migrate:refresh
Du coté de notre base de données, on peut constater que nos tables ont été créées correctement :
Et que les quelques contraintes, ici juste pour l’exemple, ont bien été créées, ici pour la table user
avec l’id
et l’email
unique :
Et dans la table post
qui a en foreign key l’id
de la table user
:
Notre environnement de base est en place, nous voilà prêt à coder ! On va maintenant pouvoir afficher des informations depuis la base de données 🙂
Documentation complète de configuration :https://laravel.com/docs/5.4/configuration
Documentation officielle des migrations : https://laravel.com/docs/5.4/migrations
Lien officiel sur les tests de base de données : https://laravel.com/docs/5.4/database-testing
Vous aimez mes articles ? Offrez-moi un café !
Ping : Premier projet Laravel 5.4 : Afficher les données depuis la base de données – intro (Part. 3/x) | Blog développeuse - Hamon
Ping : Premier projet Laravel 5.4 : Installation (Part. 1/x) | Blog développeuse - Hamon