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/