Ceci est un article pense bête pour mon premier projet Laravel
Installation
installation prérequis PHP
$ sudo apt install php7.0-xml php7.0-mbstring php7.0-json php7.0-cli php7.0-zip php7.0-sqlite3installation de Composer
Vous devez suivre les instructions sur https://getcomposer.org/download/installation de Laravel de manière global
$ ./composer.phar global require "laravel/installer"
Note: je ne parle pas des problèmes de PATH
création du projet
$ $HOME/.config/composer/vendor/bin/laravel new facturation $ cd facturation $ ../.composer.phar install
Projet: la base de donnée
La configuration peut s’effectuer dans config/database.php, mais il est préférable d’utiliser le .env pour surcharger
la conffiguration (mode débug, prod, …):
```
$ cp .env.example env.debug
$ ln -s env.debug .env
```
Générons une clé secréte ( TODO ):
```
$ php artisan key:generate
```
Nous allons maintenant paramétrer notre application pour utiliser sqlite, éditons env.debug pour avoir:
```
APP_NAME=Tutorial
...
DB_CONNECTION=sqlite
DB_DATABASE=database.sqlite
```
La création d’une table se fait en plusieurs étapes, d’abord nous allons créer plusieurs tables (products, customers, items & invoices)
et préparer les migrations. Je préfère utiliser la migration dès le debut pour avoir les bons reflexes et ainsi avoir la flexibilité
d’étendre notre base.
La création de la table
products:$ php artisan make:migration create_products_table --create=products Created Migration: 2017_07_26_063526_create_products_tableLa migration initiale s’effectue dans
./database/migrations/2017_07_26_063526_create_products_table.php... Schema::create('products', function(Blueprint $table) { $table->increments('id'); // la colonne par défaut est aussi id $table->string('name'); $table->string('type'); // bien physique ou location ou ... $table->float('vat', 4, 2); // 4 chiffres dont 2 derrière la virgule $table->float('price', 8, 2); // 8 chiffres dont 2 derrière la virgule $table->timestamps(); // ajoute les champs create_at et update_at }); ...La création de la table
customers:$ php artisan make:migration create_customers_table –create=customers
Et la migration initiale:
... Schema::create('customers', function(Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email'); $table->string('address'); //->nullable(); // l'addresse n'est pas obligatoire (?) $table->timestamps(); // ajoute les champs create_at et update_at }); ...La table
invoice:$ php artisan make:migration create_invoices_table --create=invoicesLa migration initiale avec les relations entre
customersetinvoices:... Schema::create('invoices', function(Blueprint $table) { $table->increments('id'); $table->integer('customer_id'); $table->timestamps(); // ajoute les champs create_at et update_at }); ...Et enfin la table
itemsqui contiendra chaque ligne d’une facture avec le produit, son prix lors de la facture (avec réducation éventuelle, …)$ php artisan make:migration create_items_table --create=itemsLa migration initiale:
... Schema::create('items', function(Blueprint $table) { $table->increments('id'); $table->integer('invoice_id'); $table->integer('product_id'); $table->integer('quantity'); $table->float('price', 8, 2); // 8 chiffres dont 2 derrière la virgule $table->timestamps(); // ajoute les champs create_at et update_at }); ...Nous allons maintenant peupler réellement la base SQLITE
$ php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table Migrating: 2017_07_26_063526_create_products_table Migrated: 2017_07_26_063526_create_products_table Migrating: 2017_07_26_064100_create_customers_table Migrated: 2017_07_26_064100_create_customers_table Migrating: 2017_07_26_064239_create_invoices_table Migrated: 2017_07_26_064239_create_invoices_tableLa partie sérieuse commence maintenant, nous allons décrire le modèle de notre base avec Eloquent:
Pour le modèle
Product:$ php artisan make:model Product Model created successfully.
Puis nous éditons app/Product.php pour que le résultat ressemble à ça:
RIEN A FAIRE OU DEFINIR UN $this->belongsTo(‘App\Item’); ???
```
```
Pour le modèle
Customer:$ php artisan make:model Customer Model created successfully.
Puis dans app/Customer.php pour
```
:
```