Créé en 2020 et modifié le 18 May 2021

Créé en 2020 et modifié le 18 May 2021

Base de données – enregistrement depuis Laravel

 

Laravel utilise l’ORM Eloquent.

Intro

  • réaliser le diagramme de classe  de la base de données suivante

 

Partie 1 – création de la base

Livrable :  otelo/mission2/…

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=otelo
DB_USERNAME=root
DB_PASSWORD=
  • observer dans database/migrations, le fichier php create user
  • exécuter la commande suivante pour lancer les fichiers migrations
php artisan migrate

Partie 2 – lier  la table chambre avec Laravel

Livrable :  otelo/mission2/…

  • définir le contrôleur pour les chambres via la commande suivante
php artisan make:controller -r ChambreController
  • créer le modele Chambre
php artisan make:model Chambre
  • ajouter la route
Route::get('/chambre',[ChambreController::class, 'store'] );

 

 

 

  • dans la classe Chambre, ajouter
Class Chambre extends Model
{
     protected $table = "chambre"; 
     protected $fillable = [
        'nbCouchage' ,'porte','etage','idCategorie','baignoire','prixBase' 
    ];
}
  • dans la fonction store de ChambreController
public function store(Request $request)
{
    $chambre= Chambre::create([
        'nbCouchage' =>2,
        'porte' => 'B',
        'etage' => 10,
        'idCategorie' => 1,
        'baignoire' => 0,
        'prixBase' => 50
    ]);
    //$chambre = new Chambre;
    $chambre->porte='C';
    //$chambre->etage=$request->etage;
    $chambre->save();
    
}
  • ajouter le use App\Models\Chambre dans le controleur

 

  • rafraichir le cache laravel
php artisan config:clear
  • appeler l’uri /chambre
  • ajouter les colonnes manquantes à votre table pour permettre l’ajout de la donnée.

 

 

Partie 3 – création de la table réservation via Laravel

Livrable :  otelo/mission2/…

  • créer sa propre migration pour la table réservation
php artisan make:migration create_reservation_table
  • dans le fichier de migration
    public function up()
        {
            Schema::create('test', function (Blueprint $table) {
                $table->id();
                $table->date('dateD');
                $table->date('dateF');
                $table->integer('idPeriode');
                $table->timestamps();
            });
        }
  • exécuter la migration
php artisan migrate

 

 

En cas d’erreur sur la taille des chaines, dans AppServiceProvider.php

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
 
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
    }

 

 

Partie 4- création de chambres depuis Laravel

Livrable :  otelo/mission2/…

  • réaliser un seeder
php artisan make:seed ChambreSeeder
  • dans la fonction run
$chambre= Chambre::create([
            'nbCouchage' =>2,
            'porte' => 'B',
            'etage' => 10,
            'idCategorie' => 1,
            'baignoire' => 0,
            'prixBase' => 50
        ]);
        //affichage en console
        dd($chambre);
  • dans la fonction run de database/seeds/DatabaseSeeder.php
$this->call(ChambreSeeder::class);
  • tester avec la commande et observer si une donnée est créée
php artisan db:seed
  • permettre de générer 30 chambres aléatoirement, tous les champs seront aléatoire avec du code php.

 

On verra plus tard comment récupérer les données depuis la base.

 

Notes

  • erreur à l’importation sur la taille des chaines, dans AppServiceProvider.php
public function boot()
    {
        Schema::defaultStringLength(171);
    }

 

  • annuler migration
php artisan migrate:rollback
  • annuler toutes les migrations
php artisan migrate:reset
  • annuler toutes les migrations et ré-exécuter
php artisan migrate:refresh
  • créer un model avec migration
php artisan make:model Chambre -m
php artisan migrate