Laravel
Models Migration Relation
Introduction,istallation Strucutre,model,migration Migration,Models,Relation
Les Relations
BelongsTo HasOne HasMany BelongsToMany HasManyThrough
Exemples des Relations
Relations:oneToMany,ManyToMany... Relations:Exemples
Exercices
Exercice 1 Exercice 2
Controllers Views Routes
Routes,Controller,Model,view CRUD: Etudiant CRUD: Car CRUD,Recherche: Book
Validation
Exemple :Projets
Api:Laravel +React
Seeders & Factories

Authenfication
Layouts





Laravel:La structrue du projet

La structure MVC du projet Laravel est la suivante


├── gestionVentes
    │    ├── app
    │    │    ├── Http
	│    │        ├── Controllers
	│    │        │     ├── ProduitController.php
	│    │        │     ├── ClientController.php
	│    │        │     ├── VenteController.php
	│    │        │     ├── ...les controllers font les traitements métiers 
	│    ├── Models
	│    │     ├── Produit.php
	│    │     ├── Client.php
	│    │     ├── Vente.php
	│    │     ├── ...Les models comuniquent avec la BD
	├── database
	│    ├── migrations
	│    │     ├── create_table_produit.php
	│    │     ├── create_table_client.php
	│    │     ├── create_table_vente.php
	│    │     ├── ....permet de créer les tables dans la BD
	├── resources
	│    ├── views
	│    │     ├── produit
	│    │     │     ├── index.blade.php
	│    │     │     ├── create.blade.php
	│    │     │     ├── show.blade.php
	│    │     │     ├── edit.blade.php
	│    │     │     ├── ...
	│    │     ├── client
	│    │     │     ├── index.blade.php
	│    │     │     ├── create.blade.php
	│    │     │     ├── show.blade.php
	│    │     │     ├── edit.blade.php
	│    │     │     ├── ....
	├── routes
	│    ├── web.php
	│    │     ├── contenant les routes:
    │    │     │     ├── Route::resource('produits', ProduitController::class);
    │    │     │     ├── Route::resource('clients', ClientController::class);
    │    │     │     ├── Route::resource('ventes', VenteController::class);
    │    │     │     ├── ...


1:Créer le Model:Produit

php artisan make:model Produit --migration
L'option --migration Permet de créer le fichier create_produits_table.php qui serra utilsé pour créer la table qui corresponds ce model :Produit
│    ├── Models
│    │     ├── Produit.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Produit extends Model
{
    use HasFactory;
    //ajouter les colonnes de la table produits
    protected $fillable=['libelle','marque','prix','qteStock','image'];
}

├── migrations
│     ├── create_table_produit.php
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
   //up:permet de creér la table das la base de données
    public function up(): void
    {
        Schema::create('produits', function (Blueprint $table) {
            $table->id(); //id:primary key
            $table->string('libelle', 25);//varchar(25)
            $table->string('marque', 25)->nullable();//varchar(25) null
            $table->decimal('prix', 5)->default(0.00);//decimal(5) defautl 0.00
            $table->float('qteStock', 5)->default(0);
            $table->string('image', 125);//varchar(25) not null
            $table->timestamps();
        });
    }
   
    //down :permet de supprimer la table de la base de données
    public function down(): void
    {
        Schema::dropIfExists('produits');
    }
};

Lancer la migration

Pour le moment la table Produit n'est créee ,Pour créer la table on doit lancer migrate afin de créer la table produits dans la base de données :gestionventes La base de données gestionventes on doit la créer manulement dans phpMyadmin de xampp
php artisan migrate
La tables produits est crée dans la base de données
table produits

Types de données

Voici la liste des type de données et attribut qu'on trouve dans Laravel :
CommandDescription
$table->bigIncrements('id');Incrementing ID (primary key) using a "UNSIGNED BIG INTEGER" equivalent.
$table->bigInteger('votes');BIGINT equivalent for the database.
$table->binary('data');BLOB equivalent for the database.
$table->boolean('confirmed');BOOLEAN equivalent for the database.
$table->char('name', 4);CHAR equivalent with a length.
$table->date('created_at');DATE equivalent for the database.
$table->dateTime('created_at');DATETIME equivalent for the database.
$table->decimal('amount', 5, 2);DECIMAL equivalent with a precision and scale.
$table->double('column', 15, 8);DOUBLE equivalent with precision, 15 digits in total and 8 after the decimal point.
$table->enum('choices', ['foo', 'bar']);ENUM equivalent for the database.
$table->float('amount');FLOAT equivalent for the database.
$table->increments('id');Incrementing ID (primary key) using a "UNSIGNED INTEGER" equivalent.
$table->integer('votes');INTEGER equivalent for the database.
$table->json('options');JSON equivalent for the database.
$table->jsonb('options');JSONB equivalent for the database.
$table->longText('description');LONGTEXT equivalent for the database.
$table->mediumInteger('numbers');MEDIUMINT equivalent for the database.
$table->mediumText('description');MEDIUMTEXT equivalent for the database.
$table->morphs('taggable');Adds INTEGER taggable_id and STRING taggable_type.
$table->nullableTimestamps();Same as timestamps(), except allows NULLs.
$table->rememberToken();Adds remember_token as VARCHAR(100) NULL.
$table->smallInteger('votes');SMALLINT equivalent for the database.
$table->softDeletes();Adds deleted_at column for soft deletes.
$table->string('email');VARCHAR equivalent column.
$table->string('name', 100);VARCHAR equivalent with a length.
$table->text('description');TEXT equivalent for the database.
$table->time('sunrise');TIME equivalent for the database.
$table->tinyInteger('numbers');TINYINT equivalent for the database.
$table->timestamp('added_on');TIMESTAMP equivalent for the database.
$table->timestamps();Adds created_at and updated_at columns.
$table->uuid('id');UUID equivalent for the database.