FRAMEWORK
LARAVEL
PARTIE2
Base de données et
CRUD
Introduction
1. Création et configuration de base de données avec
LARAVEL
2. Eloquent, ORM de LARAVEL
3. Les migrations de base de données dans LARAVEL
4. Les relations LARAVEL Eloquent
5. Génération des CRUDs
Introduction
L'architecture de Laravel peut être décrite comme suit.
1. Une requête est envoyée et reçue par le serveur Web. La
demande est transmise au routing.
2. Route reçoit la demande et elle est redirigée vers le
contrôleur.
3. Le contrôleur interagit avec le modèle, puis le modèle
interagit avec la base de données.
La base de données envoie/reçoit des données de Model et en
retour Model les renvoie au contrôleur.
4. Le contrôleur appelle ensuite les résultats dans View qui est
un template.
5. La vue est rendue dans le navigateur de l'utilisateur et
l'utilisateur peut voir le résultat
Introduction
• LARAVEL permet une intégration facile avec les BD en utilisant soit le langage SQL brut soit l’ORM
Eloquent.
• Lorsque le code contient une opération de base de données, il est correctement converti en instructions
SQL par Laravel, qui sont ensuite exécutés sur un moteur de base de données.
• Le résultat de l'instruction SQL exécutée est renvoyé à l'application.
• Le but de l'utilisation de l'ORM Eloquent est de résoudre l'inadéquation entre le modèle objet et la base de
données relationnelle.
• L'inadéquation est due à la manière dont les données sont stockées et représentées dans le SGBDR et les
langages orientés objet.
1- Création et configuration de base de données avec
LARAVEL
LARAVEL utilise PDO (PHP Data Objects) pour gérer les requêtes SQL.
1- créer une base de données : ouvrir phpmyadmin de votre serveur et céer la base de données de votre
projet LARAVEL
2- configurer une base de données dans LARAVEL :
ouvrir le fichier .env sur la racine de votre projet et
modifier le bloc suivant :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laraveld
b DB_USERNAME=root
DB_PASSWORD=
2- Eloquent, ORM de
LARAVEL
Eloquent présente l’ORM de base du framework LARAVEL, il
gère toutes les interactions de base de données requises pour
les opérations de CRUD.
Pas besoin de coder des requêtes SQL.
Avec Eloquent chaque table dans la base de données est gérée
par un modèle.
2- Eloquent, ORM de
LARAVEL
Nous allons commencer par la création d’un model éloquent qui sera généré dans le
dossier App/Models
en utilisant la commande suivante :
Php artisan make:model Produit -m
-m ou --migration : cela génère aussi la migration
- Allez dans le nouveau fichier de migration du model Produit et ajouter la déclaration
des champs de votre table produits
2- Eloquent, ORM de
LARAVEL
Php artisan make:model Categorie -m
-m ou --migration : cela génère aussi la migration
- Allez dans le nouveau fichier de migration du model Produit et ajouter la déclaration
des champs de votre table categories(id, nom,created_at, modified_at)
2- Eloquent, ORM de
LARAVEL
$table->string(‘nom’);
$table->timestamps(); //cette ligne permet de créer les deux champs created_at et
modified_at
=> Découvrir les différents types de champs
2- Eloquent, ORM de
LARAVEL
Différents type de champs :
$table->string();
$table->longtext();
$table->double();
$table->dateTime();
$table->integer(‘’);
$table->float(‘’);
$table->boolean(‘’);
3- Les migrations de base de données dans
LARAVEL
Les migrations dans laravel présente un processus de gestion de votre base de données
Pour créer une migration vous pouvez utiliser la commande suivante :
php artisan make:migration create_produits_table
Les migrations seront générées dans le dossier databases/migrations et contienent un horodatage qui
permet au framework de déterminer l’ordre d’execution des migrations
Exécuter les migration vous pouvez utiliser la commande suivante :
php artisan migrate => table créée dans la base de données
3- Les migrations de base de données dans
LARAVEL
php artisan migrate présente plusieurs fonctionnalités :
migrate:fresh supprime toutes les tables et relance la migration
migrate:refresh initialise toutes les tables et relance la migration
migrate:rollback annule la dernière migration
migrate:status donne des informations sur les migrations
3- Les migrations de base de données dans
LARAVEL
Configuration des champs :
$table->string(‘adresse’,255)->nullable(); // definir un champ varchar de taille 255 default null
$table->string(‘email’,150)->unique(); // definir un champ varchar de taille 150 et unique
$table->boolean(‘etat’)-
>default(0); Créer une clé
étrangère :
$table-
>unsignedBigInteger(‘categorie_id’)
;
3- Les migrations de base de données dans
LARAVEL
Activité :
- Faite la même chose pour la table produits(id, nom, photo, description, prix, #categorie_id)
1- générer le modèle et la migration
2- spécifier les champs de la table produits dans la migration
3- déclarer la clé étrangère categorie_id
4- créer la table dan la base de données
5- définir les champs Fillable
protected $fillable = [
‘nom', ‘photo', ‘description', ‘prix', ‘categorie_id'
];
4- Les relations LARAVEL
Eloquent
One to One:
- Exemple : user à un phone
Pour définir cette relation : il suffit de créer une méthode phone() dans le modèle User qui retourne la methode hasOne()
Et une méthode user() dans le modèle Phone qui retourne la methode belongsTo()
class User extends Model
{
public function phone()
{
//return $this->hasOne(Phone::class);
return $this->hasOne('AppModelsPhone');
}
}
class Phone extends Model
{
public function user()
{
//return $this->belongsTo(User::class);
return $this-> belongsTo('AppModelsUser');
}
}
4- Les relations LARAVEL
Eloquent
One to Many:
- Exemple : produit et categorie
Créer une méthode produit() dans le modèle Categorie qui retourne la methode hasMany()
Et une méthode categorie() dans le modèle Produit qui retourne la methode belongsTo()
class User extends Model
{
public function categorie()
{
//return $this->hasMany(Produit::class);
return $this->hasMany('AppModelsProduit');
}
}
class Phone extends Model
{
public function produit()
{
//return $this->belongsTo(Categorie::class);
return $this-> belongsTo('AppModelsCategorie');
}
}
4- Les relations LARAVEL
Eloquent
Many to Many:
- Exemple : etudiant et cours => coursetudiant
- Definir deux clés étrangères(etudiant_id, cour_id) dans la migration etudiantcour
class Etudiant extends Model
{
public function cours()
{
// Un etudiant consulte un ou plusieurs cours.
return $this->belongsToMany(Cour::class);
}
}
class Cours extends Model
{
public function etudiants()
{
// Un cours est consulté par un ou plusieurs etudnts.
return $this->belongsToMany(Etudiant::class);
}
}
//Création des modèles
php artisan make:model Etudiant -m
php artisan make:model Cours --migration
//Création de la table de pivot
php artisan make:migration create_etudiant_cour_table
5- Génération des
CRUDs
- Après la création des models et des tables dans la base de données, nous sommes
prêt maintenant pour générer les CRUD (controllers et vues)
Ou créer le tout à la fois (model, migration, controller)
- Dans le fichieir routes/web.php ajouter une route ressource
- Pour afficher toutes les routes
- Nous remarquons que les routes du controller categorie seront générées
php artisan make:controller CategorieController --migration --model=Categorie
php artisan make:model Categorie -mcr
Route::resource('categories','CategorieController');
php artisan route:list
5- Génération des
CRUDs
- Si on ouvre le fichier CategorieController.php, nous allons trouvé 7 méthodes
générées : index(), create(), store(), show(), edit(), update() et destroy()
- Leurs contenu sera développé à la main en suivant un modèle,
- Le code source des méthode se base sur l’ORM Eloquent
1- Méthode index() public function index()
{
$categories = Categorie::all();
return
view('categories.index',compact('categories'));
}
5- Génération des
CRUDs
2- Méthode create()
3- Méthode store()
public function create()
{
return view('categories.create');
}
public function store(Request $request)
{
$request->validate([
'nom' => 'required',
]);
Categorie::create($request->all());
return redirect()->route('categories.index’)
->with('success','Categorie créé avec succès.');
}
5- Génération des
CRUDs
4- Méthode show()
5- Méthode edit()
public function show(Categorie $categorie)
{
return
view('categories.show',compact('Categorie')
);
}
public function edit(Categorie $categorie)
{
return
view('categories.edit',compact('categorie'));
}
5- Génération des
CRUDs
6- Méthode update()
7- Méthode destroy()
public function update(Request $request, Categorie
$categorie)
{
$request-
>validate([ 'nom'
=> 'required',
]);
$categorie-
>update($request-
>all());
return redirect()->route('categories.index')
->with('success','Categorie mise à jour avec
succès');
}
public function destroy(Categorie $categorie)
{
$categorie->delete();
return redirect()->route('categories.index')
->with('success','categorie supprimé avec succès');
}
6- Les vues de CRUD sous
LARAVEL
Il nous reste que la création des vue avec le Template.
Notre site e-commerce admet déjà une partie admin pour gérer les categorie, les produits, consulter les
clients, consulter les commandes et les imprimer…
Alors, dans ce cas on doit bien organiser notre dosseirs resources/views dans le quel on va séparer les
vues de la partie client (site web) à part et les vues de la partie admin à part.
Nous pouvons créer des dossiers pour organiser nos fichiers : font/ et back/
Vous trouvez dans ces liens des modèles de vue
https://apcpedagogie.com/les-operations-crud-avec-eloquent-laravel-1-3/
https://apcpedagogie.com/les-operations-crud-avec-eloquent-laravel-2-3/

FRAMEWORK LARAVEL PARTIE2 pour développer des sits web

  • 1.
  • 2.
    PARTIE2 Base de donnéeset CRUD Introduction 1. Création et configuration de base de données avec LARAVEL 2. Eloquent, ORM de LARAVEL 3. Les migrations de base de données dans LARAVEL 4. Les relations LARAVEL Eloquent 5. Génération des CRUDs
  • 3.
    Introduction L'architecture de Laravelpeut être décrite comme suit. 1. Une requête est envoyée et reçue par le serveur Web. La demande est transmise au routing. 2. Route reçoit la demande et elle est redirigée vers le contrôleur. 3. Le contrôleur interagit avec le modèle, puis le modèle interagit avec la base de données. La base de données envoie/reçoit des données de Model et en retour Model les renvoie au contrôleur. 4. Le contrôleur appelle ensuite les résultats dans View qui est un template. 5. La vue est rendue dans le navigateur de l'utilisateur et l'utilisateur peut voir le résultat
  • 4.
    Introduction • LARAVEL permetune intégration facile avec les BD en utilisant soit le langage SQL brut soit l’ORM Eloquent. • Lorsque le code contient une opération de base de données, il est correctement converti en instructions SQL par Laravel, qui sont ensuite exécutés sur un moteur de base de données. • Le résultat de l'instruction SQL exécutée est renvoyé à l'application. • Le but de l'utilisation de l'ORM Eloquent est de résoudre l'inadéquation entre le modèle objet et la base de données relationnelle. • L'inadéquation est due à la manière dont les données sont stockées et représentées dans le SGBDR et les langages orientés objet.
  • 5.
    1- Création etconfiguration de base de données avec LARAVEL LARAVEL utilise PDO (PHP Data Objects) pour gérer les requêtes SQL. 1- créer une base de données : ouvrir phpmyadmin de votre serveur et céer la base de données de votre projet LARAVEL 2- configurer une base de données dans LARAVEL : ouvrir le fichier .env sur la racine de votre projet et modifier le bloc suivant : DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laraveld b DB_USERNAME=root DB_PASSWORD=
  • 6.
    2- Eloquent, ORMde LARAVEL Eloquent présente l’ORM de base du framework LARAVEL, il gère toutes les interactions de base de données requises pour les opérations de CRUD. Pas besoin de coder des requêtes SQL. Avec Eloquent chaque table dans la base de données est gérée par un modèle.
  • 7.
    2- Eloquent, ORMde LARAVEL Nous allons commencer par la création d’un model éloquent qui sera généré dans le dossier App/Models en utilisant la commande suivante : Php artisan make:model Produit -m -m ou --migration : cela génère aussi la migration - Allez dans le nouveau fichier de migration du model Produit et ajouter la déclaration des champs de votre table produits
  • 8.
    2- Eloquent, ORMde LARAVEL Php artisan make:model Categorie -m -m ou --migration : cela génère aussi la migration - Allez dans le nouveau fichier de migration du model Produit et ajouter la déclaration des champs de votre table categories(id, nom,created_at, modified_at)
  • 9.
    2- Eloquent, ORMde LARAVEL $table->string(‘nom’); $table->timestamps(); //cette ligne permet de créer les deux champs created_at et modified_at => Découvrir les différents types de champs
  • 10.
    2- Eloquent, ORMde LARAVEL Différents type de champs : $table->string(); $table->longtext(); $table->double(); $table->dateTime(); $table->integer(‘’); $table->float(‘’); $table->boolean(‘’);
  • 11.
    3- Les migrationsde base de données dans LARAVEL Les migrations dans laravel présente un processus de gestion de votre base de données Pour créer une migration vous pouvez utiliser la commande suivante : php artisan make:migration create_produits_table Les migrations seront générées dans le dossier databases/migrations et contienent un horodatage qui permet au framework de déterminer l’ordre d’execution des migrations Exécuter les migration vous pouvez utiliser la commande suivante : php artisan migrate => table créée dans la base de données
  • 12.
    3- Les migrationsde base de données dans LARAVEL php artisan migrate présente plusieurs fonctionnalités : migrate:fresh supprime toutes les tables et relance la migration migrate:refresh initialise toutes les tables et relance la migration migrate:rollback annule la dernière migration migrate:status donne des informations sur les migrations
  • 13.
    3- Les migrationsde base de données dans LARAVEL Configuration des champs : $table->string(‘adresse’,255)->nullable(); // definir un champ varchar de taille 255 default null $table->string(‘email’,150)->unique(); // definir un champ varchar de taille 150 et unique $table->boolean(‘etat’)- >default(0); Créer une clé étrangère : $table- >unsignedBigInteger(‘categorie_id’) ;
  • 14.
    3- Les migrationsde base de données dans LARAVEL Activité : - Faite la même chose pour la table produits(id, nom, photo, description, prix, #categorie_id) 1- générer le modèle et la migration 2- spécifier les champs de la table produits dans la migration 3- déclarer la clé étrangère categorie_id 4- créer la table dan la base de données 5- définir les champs Fillable protected $fillable = [ ‘nom', ‘photo', ‘description', ‘prix', ‘categorie_id' ];
  • 15.
    4- Les relationsLARAVEL Eloquent One to One: - Exemple : user à un phone Pour définir cette relation : il suffit de créer une méthode phone() dans le modèle User qui retourne la methode hasOne() Et une méthode user() dans le modèle Phone qui retourne la methode belongsTo() class User extends Model { public function phone() { //return $this->hasOne(Phone::class); return $this->hasOne('AppModelsPhone'); } } class Phone extends Model { public function user() { //return $this->belongsTo(User::class); return $this-> belongsTo('AppModelsUser'); } }
  • 16.
    4- Les relationsLARAVEL Eloquent One to Many: - Exemple : produit et categorie Créer une méthode produit() dans le modèle Categorie qui retourne la methode hasMany() Et une méthode categorie() dans le modèle Produit qui retourne la methode belongsTo() class User extends Model { public function categorie() { //return $this->hasMany(Produit::class); return $this->hasMany('AppModelsProduit'); } } class Phone extends Model { public function produit() { //return $this->belongsTo(Categorie::class); return $this-> belongsTo('AppModelsCategorie'); } }
  • 17.
    4- Les relationsLARAVEL Eloquent Many to Many: - Exemple : etudiant et cours => coursetudiant - Definir deux clés étrangères(etudiant_id, cour_id) dans la migration etudiantcour class Etudiant extends Model { public function cours() { // Un etudiant consulte un ou plusieurs cours. return $this->belongsToMany(Cour::class); } } class Cours extends Model { public function etudiants() { // Un cours est consulté par un ou plusieurs etudnts. return $this->belongsToMany(Etudiant::class); } } //Création des modèles php artisan make:model Etudiant -m php artisan make:model Cours --migration //Création de la table de pivot php artisan make:migration create_etudiant_cour_table
  • 18.
    5- Génération des CRUDs -Après la création des models et des tables dans la base de données, nous sommes prêt maintenant pour générer les CRUD (controllers et vues) Ou créer le tout à la fois (model, migration, controller) - Dans le fichieir routes/web.php ajouter une route ressource - Pour afficher toutes les routes - Nous remarquons que les routes du controller categorie seront générées php artisan make:controller CategorieController --migration --model=Categorie php artisan make:model Categorie -mcr Route::resource('categories','CategorieController'); php artisan route:list
  • 19.
    5- Génération des CRUDs -Si on ouvre le fichier CategorieController.php, nous allons trouvé 7 méthodes générées : index(), create(), store(), show(), edit(), update() et destroy() - Leurs contenu sera développé à la main en suivant un modèle, - Le code source des méthode se base sur l’ORM Eloquent 1- Méthode index() public function index() { $categories = Categorie::all(); return view('categories.index',compact('categories')); }
  • 20.
    5- Génération des CRUDs 2-Méthode create() 3- Méthode store() public function create() { return view('categories.create'); } public function store(Request $request) { $request->validate([ 'nom' => 'required', ]); Categorie::create($request->all()); return redirect()->route('categories.index’) ->with('success','Categorie créé avec succès.'); }
  • 21.
    5- Génération des CRUDs 4-Méthode show() 5- Méthode edit() public function show(Categorie $categorie) { return view('categories.show',compact('Categorie') ); } public function edit(Categorie $categorie) { return view('categories.edit',compact('categorie')); }
  • 22.
    5- Génération des CRUDs 6-Méthode update() 7- Méthode destroy() public function update(Request $request, Categorie $categorie) { $request- >validate([ 'nom' => 'required', ]); $categorie- >update($request- >all()); return redirect()->route('categories.index') ->with('success','Categorie mise à jour avec succès'); } public function destroy(Categorie $categorie) { $categorie->delete(); return redirect()->route('categories.index') ->with('success','categorie supprimé avec succès'); }
  • 23.
    6- Les vuesde CRUD sous LARAVEL Il nous reste que la création des vue avec le Template. Notre site e-commerce admet déjà une partie admin pour gérer les categorie, les produits, consulter les clients, consulter les commandes et les imprimer… Alors, dans ce cas on doit bien organiser notre dosseirs resources/views dans le quel on va séparer les vues de la partie client (site web) à part et les vues de la partie admin à part. Nous pouvons créer des dossiers pour organiser nos fichiers : font/ et back/ Vous trouvez dans ces liens des modèles de vue https://apcpedagogie.com/les-operations-crud-avec-eloquent-laravel-1-3/ https://apcpedagogie.com/les-operations-crud-avec-eloquent-laravel-2-3/