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