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
Middleware

Seeders & Factories

Authenfication
Layouts





Laravel:Relations Exercices

Soit le Schéma Relationnel 1. Système de Gestion d'Étudiants :

Étudiant(ID_Etudiant, Nom, Prénom, Adresse)
Cours(ID_Cours, NomCours, CodeCours)
Enseignant(ID_Enseignant, Nom, Prénom, Titre)
Inscription(ID_Inscription, ID_Etudiant, ID_Cours, Annee)
Migration pour la table Étudiant (create_students_table.php) :
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up()
    {
        Schema::create('students', function (Blueprint $table) {
            $table->id('ID_Etudiant');
            $table->string('Nom');
            $table->string('Prénom');
            $table->string('Adresse');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('students');
    }
};
Migration pour la table Cours (create_courses_table.php) :
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up()
    {
        Schema::create('courses', function (Blueprint $table) {
            $table->id('ID_Cours');
            $table->string('NomCours');
            $table->string('CodeCours');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('courses');
    }
};
Migration pour la table Enseignant (create_teachers_table.php) :
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up()
    {
        Schema::create('teachers', function (Blueprint $table) {
            $table->id('ID_Enseignant');
            $table->string('Nom');
            $table->string('Prénom');
            $table->string('Titre');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('teachers');
    }
};
Migration pour la table Inscription (create_inscriptions_table.php) :
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up()
    {
        Schema::create('inscriptions', function (Blueprint $table) {
            $table->id('ID_Inscription');
            $table->unsignedBigInteger('ID_Etudiant');
            $table->unsignedBigInteger('ID_Cours');
            $table->string('Annee');
            $table->timestamps();

            $table->foreign('ID_Etudiant')->references('ID_Etudiant')->on('students');
            $table->foreign('ID_Cours')->references('ID_Cours')->on('courses');
        });
    }

    public function down()
    {
        Schema::dropIfExists('inscriptions');
    }
};
Modèle pour la table Étudiant (Student.php) :
use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    protected $table = 'students';
    protected $primaryKey = 'ID_Etudiant';
    protected $fillable = ['Nom', 'Prénom', 'Adresse'];

    public function inscriptions()
    {
        return $this->hasMany(Inscription::class, 'ID_Etudiant',          'ID_Etudiant');
		                             //Inscription (foreign key)       primary key
    }
}
Modèle pour la table Cours (Course.php) :
use Illuminate\Database\Eloquent\Model;

class Course extends Model
{
    protected $table = 'courses';
    protected $primaryKey = 'ID_Cours';
    protected $fillable = ['NomCours', 'CodeCours'];

    public function inscriptions()
    {
        return $this->hasMany(Inscription::class, 'ID_Cours', 'ID_Cours');
    }
}
Modèle pour la table Enseignant (Teacher.php) :
use Illuminate\Database\Eloquent\Model;

class Teacher extends Model
{
    protected $table = 'teachers';
    protected $primaryKey = 'ID_Enseignant';
    protected $fillable = ['Nom', 'Prénom', 'Titre'];

    public function inscriptions()
    {
        return $this->hasMany(Inscription::class, 'ID_Enseignant', 'ID_Enseignant');
    }
}
Modèle pour la table Inscription (Inscription.php) :
use Illuminate\Database\Eloquent\Model;

class Inscription extends Model
{
    protected $table = 'inscriptions';
    protected $primaryKey = 'ID_Inscription';
    protected $fillable = ['ID_Etudiant', 'ID_Cours', 'Annee'];

    public function student()
    {
        return $this->belongsTo(Student::class, 'ID_Etudiant', 'ID_Etudiant');
	
    }

    public function course()
    {
        return $this->belongsTo(Course::class, 'ID_Cours', 'ID_Cours');
    }
}

2. Système de Commandes en Ligne :
Client(ID_Client, Nom, Prénom, Adresse)
Produit(ID_Produit, NomProduit, Prix, Stock)
Commande(ID_Commande, ID_Client, DateCommande)
Fournisseur(ID_Fournisseur, Nom, Adresse)
3. Système Hospitalier :
Patient(ID_Patient, Nom, Prénom, DateNaissance, Adresse)
Médecin(ID_Medecin, Nom, Prénom, Spécialité)
Service(ID_Service, NomService, Description)
Prescription(ID_Prescription, ID_Medecin, ID_Patient, Medicament, Posologie)
4. Système de Réservation d'Hôtel :
Client(ID_Client, Nom, Prénom, Adresse)
Chambre(ID_Chambre, NumChambre, TypeChambre, Prix)
Réservation(ID_Reservation, ID_Client, ID_Chambre, DateDebut, DateFin)
Employé(ID_Employe, Nom, Prénom, Poste)
1. Compagnie d'Assurance :
Client(ID_Client, Nom, Prénom, Adresse)
PoliceAssurance(ID_Police, TypePolice, MontantPrime)
Sinistre(ID_Sinistre, DateSinistre, MontantDommage)
AgentAssurance(ID_Agent, Nom, Prénom, Agence)
Relations :
Un client peut souscrire à plusieurs polices d'assurance (relation un-à-plusieurs entre Client et PoliceAssurance).
Un sinistre est associé à une police d'assurance et à un client (relation un-à-un entre Sinistre, PoliceAssurance et Client). Un agent d'assurance gère plusieurs clients et polices (relation un-à-plusieurs entre AgentAssurance, Client et PoliceAssurance).
Créer les migrations et les modèles