Vous êtes sur la page 1sur 21

FRAMEWORK LARAVEL

Présenté par:

Wajdi BOUAZIZ

Expert en développement web


PARTIE2
Base de données et CRUD

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

6. Les vues de CRUD sous LARAVEL


1- Création et configuration de base de données avec LARAVEL

LARAVEL permet une intégration facile avec les BD en utilisant soit le langage SQL brut soit l’ORM
Eloquent.

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 : DB_CONNECTION=mysql


DB_HOST=127.0.0.1
ouvrir le fichier .env sur la racine de votre projet et DB_PORT=3306
DB_DATABASE=laraveldb
modifier le bloc suivant : 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

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 Category -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_products_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(‘category_id’);

$table->foreign('category_id')->references('id')->on(‘categories')->onDelete('cascade');
3- Les migrations de base de données dans LARAVEL

Activité :

- Faite la même chose pour la table products(id, nom, photo, description, prix, #category_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 category_id

4- créer la table dan la base de données


protected $fillable = [
5- définir les champs Fillable dans le model ‘nom', ‘photo', ‘description', ‘prix', ‘category_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 class Phone extends Model
{ {
public function phone() public function user()
{ {
//return $this->hasOne(Phone::class); //return $this->belongsTo(User::class);
return $this->hasOne('App\Models\Phone'); return $this-> belongsTo('App\Models\User');
} }
} }
4- Les relations LARAVEL Eloquent

One to Many:

- Exemple : product et category

Créer une méthode product() dans le modèle Category qui retourne la methode hasMany()

Et une méthode category() dans le modèle Product qui retourne la methode belongsTo()

class Category extends Model class Product extends Model


{ {
public function product() public function category()
{ {
//return $this->hasMany(Product::class); //return $this->belongsTo(Category::class);
return $this->hasMany('App\Models\Product'); return $this-> belongsTo('App\Models\Category');
} }
} }
4- Les relations LARAVEL Eloquent

Many to Many:

- Exemple : etudiant et cours => coursetudiant


//Création des modèles //Création de la table de pivot
php artisan make:model Etudiant -m php artisan make:migration create_cour_etudiant_table
php artisan make:model Cour --migration

- Definir deux clés étrangères(etudiant_id, cour_id) dans la migration cour_etudiant


class Etudiant extends Model class Cours extends Model
{ {
public function cour() public function etudiant()
{ {
// Un etudiant consulte un ou plusieurs cours. // Un cours est consulté par un ou plusieurs etudnts.
return $this->belongsToMany(Etudiant::class);
return $this->belongsToMany(Cour::class); }
} }
}
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)
php artisan make:controller CategoriesController --resource --model=Category
Ou créer le tout à la fois (model, migration, controller)
php artisan make:model Category -mcr
- Dans le fichieir routes/web.php ajouter une route ressource
Route::resource('categories','CategoriesController');
- Pour afficher toutes les routes
php artisan route:list
- Nous remarquons que les routes du controller categorie seront générées
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 = Category::all();

return view('categories.index',compact('categories'));
}
5- Génération des CRUDs

2- Méthode create() public function create()


{
return view('categories.create');
}

3- Méthode store() public function store(Request $request)


{
$request->validate([
'nom' => 'required',
]);

Category::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() public function show(Category $category)


{
return view('categories.show',compact('Category'))
;
}

5- Méthode edit() public function edit(Category $category)


{
return view('categories.edit',compact('category'));
}
5- Génération des CRUDs
public function update(Request $request, Category $category)
6- Méthode update() {
$request->validate([
'nom' => 'required',
]);
$category->update($request->all());

return redirect()->route('categories.index')
->with('success','Categorie mise à jour avec succès');
}

public function destroy(Category $category)


7- Méthode destroy() {
$category->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 : front/ et back/

Vous trouvez dans ces liens des modèles de vue (copier/coller)

https://apcpedagogie.com/les-operations-crud-avec-eloquent-laravel-2-3/

https://apcpedagogie.com/les-operations-crud-avec-eloquent-laravel-3-3/

Vous aimerez peut-être aussi