Cours

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 68

Développer en back-end

Module : Approfondir la programmation Laravel

M. DAIF OTHMANE
Introductionà l’authentification Laravel

 L’authentification est cruciale dans les applications web, assurant la sécurité et la


confidentialité des données. Elle est essentielle pour garantir l'intégrité des
informations manipulées.

 Les frameworks tels que Laravel offrent des fonctionnalités étendues pour la gestion
sécurisée des utilisateurs. Laravel simplifie et renforce le processus
d'authentification.

 Laravel permet une mise en œuvre rapide et sécurisée des fonctionnalités


d'authentification. Les développeurs peuvent utiliser des composants prêts à l'emploi
pour gérer l'inscription, la connexion, etc.

 Malgré la simplicité, une implémentation incorrecte des mécanismes


d'authentification peut introduire des vulnérabilités. Les erreurs peuvent être
exploitées par des parties malveillantes, compromettant la sécurité.
Introductionà l’authentification Laravel

 Laravel simplifie l'authentification grâce à ses « guards » et « providers ». Les guards


gèrent l'authentification à chaque requête, tandis que les providers récupèrent les
utilisateurs depuis un stockage persistant, comme une base de données MySQL.

 La configuration se fait dans 'config/auth.php', offrant des options ajustables.


 Paramètres d'Authentification par Défaut:

 Configuration des Guards:


Introductionà l’authentification Laravel

 Les Fournisseurs d'Utilisateurs:


Définir le fournisseur d'utilisateurs pour récupérer les données:

 Configurez la réinitialisation du mot de passe avec des options spécifiques pour


chaque table ou modèle d'utilisateurs, et ajustez le délai d'expiration des jetons de
réinitialisation

 Définissez le délai d'attente avant l'expiration de la confirmation du mot de passe,


par défaut à trois heures, modifiable en fonction des exigences de votre application.
Types de méthodes
d’authentification dans Laravel

Types de méthodes d’authentification Laravel

Authentification par mot Authentification


Authentification par jeton
de passe multifactorielle
Types de méthodes d’authentification
dans Laravel
 Authentification par Mot de Passe :
L'utilisateur se connecte en fournissant un identifiant (généralement un nom
d'utilisateur ou une adresse e-mail) et un mot de passe.
Les informations d'identification sont vérifiées par le système par rapport à celles
stockées dans une base de données ou un annuaire.

 Authentification par Jeton :


L'utilisateur reçoit un jeton après une première authentification réussie. Ce jeton est
ensuite utilisé pour les requêtes suivantes au lieu du mot de passe.
Le jeton est généralement signé numériquement pour assurer son intégrité. Il est
envoyé avec chaque requête et vérifié côté serveur.

 Authentification Multifactorielle (MFA) :


Utilise plusieurs méthodes d'authentification pour renforcer la sécurité. Il peut s'agir de
quelque chose que l'utilisateur sait (mot de passe), de quelque chose qu'il a (jeton
physique ou application mobile) et/ou de quelque chose qu'il est (empreinte digitale,
reconnaissance faciale).
L'utilisateur doit réussir plusieurs étapes d'authentification pour accéder au système.
Bibliothéques d’authentification Laravel

Recherche à faire : Chercher les diffrerentes


bibliothéques d’authentification qui existe dans
Laravel.
Bibliothéques d’authentification Laravel

Laravel Breeze:
 Une interface simple et facile à utiliser pour gérer l'authentification, l'inscription et la
réinitialisation du mot de passe.
 Un ensemble de contrôleurs et de vues pour gérer l'inscription et l'authentification
des utilisateurs.
 Un ensemble de modèles Blade pour afficher les formulaires d'authentification et
d'inscription.
 Un ensemble de routes pour gérer l'authentification et l'inscription des utilisateurs.
 Un ensemble de cas de test pour tester les fonctionnalités d'authentification et
d'inscription.
Bibliothéques d’authentification Laravel

Laravel Breeze:

Configuration :

Interface donné
Bibliothéques d’authentification Laravel

Laravel Sanctum:

 Système d'Authentification Léger : Laravel Sanctum est une solution légère


d'authentification spécialement conçue pour les Single Page Applications (SPA) et les
applications mobiles.

 Génération de Jetons API Multiples : Il permet aux utilisateurs de créer plusieurs


jetons API, offrant ainsi une flexibilité dans la gestion des autorisations et des actions
spécifiques accordées à chaque jeton.

 Champs d'Application Spécifiques : Les jetons générés par Sanctum sont dotés de
champs d'application, précisant les actions autorisées. Ces champs définissent les
permissions et le comportement autorisé pour chaque jeton API.
Bibliothéques d’authentification Laravel

Laravel Sanctum:
Installation :
Bibliothéques d’authentification Laravel
 Exemple d'utilisation de Laravel Sanctum
Prenons un exemple simple pour clarifier ce que sanctum peut faire. nous allons
construire une API pour l'enregistrement des utilisateurs, la connexion et la
déconnexion.
d'abord:
nous devrions créer notre contrôleur
Bibliothéques d’authentification Laravel
 Exemple d'utilisation de Laravel Sanctum
Bibliothéques d’authentification Laravel
 Exemple d'utilisation de Laravel Sanctum
Bibliothéques d’authentification Laravel
 Exemple d'utilisation de Laravel Sanctum
Bibliothéques d’authentification Laravel

Laravel JWT:

 Mécanisme d'authentification basé sur des tokens JSON.


 Le serveur génère un token contenant des informations utilisateur encodées en
JSON.
 Le token est envoyé au client qui le renvoie dans les requêtes subséquentes.
 Laravel utilise la bibliothèque "tymon/jwt-auth" pour implémenter JWT.
Bibliothéques d’authentification Laravel
Laravel JWT:

Différences entre JWT et Sanctum :


JWT :
 Stateless : Aucune information côté serveur sur les tokens émis.
 Convient pour les applications distribuées et les microservices.
 Nécessite une gestion manuelle des tokens invalides (pas de révocation côté
serveur).
Sanctum :
 Stateless avec gestion de session : Utilise des cookies pour gérer la session.
 Idéal pour les applications monolithiques avec une architecture centralisée.
 Gestion simplifiée des tokens révoqués grâce à des sessions côté serveur.
 Choix entre JWT et Sanctum :
 JWT est souvent préféré pour les applications distribuées, les API, et lorsque la
gestion manuelle des tokens est acceptable.
 Sanctum convient mieux aux applications monolithiques nécessitant une gestion de
session côté serveur et une révocation simplifiée des tokens.
Bibliothéques d’authentification Laravel
OAuth2 :

OAuth2 (Open Authorization 2.0) est un protocole d'autorisation standard qui permet
à une application tierce d'obtenir l'accès limité à des ressources d'un utilisateur sans
partager ses identifiants. Il fournit un cadre flexible pour l'authentification et
l'autorisation, souvent utilisé pour sécuriser les API. OAuth2 définit différents flux
d'autorisation, tels que le code d'autorisation, le mot de passe, le flux implicite et le flux
de client.

Laravel Passport :

Laravel Passport est un package officiel de Laravel qui simplifie l'implémentation


d'OAuth2 dans une application Laravel. Il fournit une gestion complète de
l'authentification API, y compris la gestion des jetons d'accès et de rafraîchissement.
Passport utilise le protocole OAuth2 pour créer des API sécurisées et permettre aux
applications tierces de demander l'accès aux ressources de l'utilisateur.
Synthese

 Passport : Offre une solution OAuth2 complète pour les applications Laravel, émet
des jetons d'accès et gère l'authentification API.
 JWT : Propose des jetons auto-suffisants pour authentifier les utilisateurs sans état
de session, souvent utilisé dans des applications décentralisées.
 Sanctum : Orienté vers l'authentification basée sur les sessions, adapté aux
applications monolithiques, génère des jetons d'accès pour l'API Laravel.
Chiffrement

 Le chiffrement dans Laravel consiste à rendre les données illisibles pour assurer leur
confidentialité et sécurité. Cela protège les informations sensibles, telles que les
mots de passe ou les données de carte de crédit, en les transformant à l'aide
d'algorithmes spécifiques.
 Les services de cryptage de Laravel offrent une interface facile et pratique pour
chiffrer et déchiffrer du texte via OpenSSL, utilisant les algorithmes AES-256 et AES-
128.
 Toutes les valeurs chiffrées dans Laravel sont signées avec un code d'authentification
de message (MAC) pour garantir l'intégrité de la valeur une fois qu'elle est chiffrée.
Chiffrement
Cas d'utilisation du Chiffrement :

 Sécurisation des Communications : Le chiffrement est utilisé pour sécuriser


les données pendant leur transmission sur des réseaux, garantissant que seuls les
destinataires autorisés peuvent les comprendre.
 Protection des Données Sensibles : Les données stockées sur des supports
physiques ou dans le cloud peuvent être chiffrées pour empêcher un accès non
autorisé, même en cas de compromission physique.
 Confidentialité des Fichiers : Chiffrer des fichiers individuels ou des dossiers
entiers assure leur confidentialité, surtout lorsqu'ils sont partagés ou stockés sur
des dispositifs mobiles.
Chiffrement
Configuration :
Avant d'utiliser le chiffreur de Laravel, définissez la configuration de la clé dans le fichier
config/app.php. Cette configuration dépend de la variable d'environnement APP_KEY.
Utilisez la commande :
php artisan key:generate
pour créer une clé sécurisée. Habituellement, Laravel génère cette clé
automatiquement lors de l'installation.

Chiffrer une valeur:


Pour chiffrer une valeur, utilisez la méthode encryptString de la façade Crypt. Toutes les
valeurs chiffrées utilisent le chiffrement AES-256-CBC d'OpenSSL et sont également
signées avec un code d'authentification de message (MAC). Cela garantit que toute
tentative de falsification par des utilisateurs malveillants sera détectée lors du
décryptage.
Chiffrement

Déchiffrer une valeur:


Pour décrypter des valeurs, utilisez la méthode decryptString de la façade Crypt. Si la
valeur ne peut pas être correctement déchiffrée, par exemple en raison d'un code
d'authentification de message invalide, une exception DecryptException sera générée.
Hachage

 Le hachage transforme des données en une empreinte fixe, sans possibilité de


récupérer les données d'origine. Il sert à vérifier l'intégrité des données.
 Contrairement au chiffrement réversible, le hachage est unidirectionnel, rendant
impossible la récupération des données originales à partir de l'empreinte. Le
hachage est utilisé pour stocker des mots de passe, vérifier l'intégrité des données,
tandis que le chiffrement sécurise des données sensibles de manière réversible.
Hachage

 Cas d'utilisation du Hachage :


1. Stockage de Mots de Passe : Les mots de passe des utilisateurs sont souvent
hachés avant d'être stockés dans une base de données. Cela garantit que même en
cas d'accès non autorisé, les mots de passe réels ne sont pas exposés.
2. Intégrité des Données : Pour vérifier si des données ont été altérées pendant le
transfert ou le stockage, une empreinte de hachage peut être générée avant l'envoi,
et la même empreinte peut être recalculée à la réception pour comparaison.
3. Stockage d'Informations Sensibles : Lorsqu'il est nécessaire de stocker des
informations telles que des numéros de carte de crédit de manière unique, un
hachage peut être utilisé pour créer des identifiants uniques tout en préservant la
confidentialité.
Hachage

Configuration :
Le mode de hachage par défaut pour votre application est défini dans le fichier de
configuration config/hashing.php. Vous avez le choix entre différents modes,
notamment Bcrypt et Argon2 .
Utilisation:
Autorisation

• Laravel propose une approche complète de l'autorisation avec les Gates, les Policies
et les Stratégies.
• Les Gates offrent une méthode simple basée sur des fermetures dans le
AuthServiceProvider.
• Les Policies organisent la logique d'autorisation autour des modèles à l'aide de
classes dédiées, favorisant une structure organisée.
• Les Stratégies permettent de définir des règles d'autorisation réutilisables, intégrées
dans les Policies pour une composition efficace.
• L'utilisation combinée de ces composants offre une flexibilité étendue tout en
maintenant une structure claire et maintenable dans la gestion des autorisations
Laravel.
Autorisation
Utiliser les portes
Gates sont des fermetures qui déterminent si un utilisateur est autorisé à effectuer une
certaine action sur une ressource. Généralement, les portes sont définies dans la boot
méthode de la App\Providers\AuthServiceProvider utilisant la Gate façade.Voici
un exemple de portail permettant uniquement aux utilisateurs premium de visualiser
certains contenus:

Une Gate reçoit toujours une instance d'utilisateur en tant que premier argument, vous
n'avez pas besoin de la passer lors de l'utilisation de la porte, et peut éventuellement
recevoir des arguments supplémentaires tels que le modèle éloquent concerné.
Autorisation
Autoriser des actions avec des portes
Pour autoriser une action avec les portails, utilisez les méthodes allows ou denies de la
Gate façade, sans transmettre l'utilisateur, géré automatiquement par Laravel.
Généralement appelées dans les contrôleurs avant des actions nécessitant une
autorisation.

Vous pouvez autoriser plusieurs actions à la fois en utilisant les méthodes any ou none :
Autorisation
Vous pouvez également définir des portes avec des conditions plus complexes en
utilisant une logique personnalisée. Par exemple , Cette porte vérifie si l'utilisateur peut
éditer un profil en fonction de plusieurs conditions:

Vous pouvez autoriser plusieurs actions à la fois en utilisant les méthodes any ou none :
Autorisation
Les politiques:

Les stratégies sont des classes qui vous aident à organiser la logique d'autorisation
autour d’une ressource de modèle. Par exemple pour une application de gestion de
contenu, nous pourrions avoir un ContentPolicy qui gère l'accès des utilisateurs au
modèle de Content . Pour rendre ContentPolicy , laravel fournit une commande
artisanale. Il suffit de courir:

Cela fera une classe de politique vide et placera dans le dossier app/Policies .
Une fois que vous avez créé la classe de politique, vous devez l'enregistrer dans le
fichier AuthServiceProvider de Laravel. Ce fichier est fourni avec toutes les
nouvelles installations Laravel.
Ouvrez AuthServiceProvider situé dans le répertoire app/Providers et importez
la classe de politique que vous avez créée. Ensuite, ajoutez le mappage dans la méthode
boot du service provider.
Autorisation
Les politiques:

L'écriture de Policies suit le même schéma que l'écriture de Gates . La porte


d'autorisation de contenu peut être réécrite sous la forme d'une politique comme
celle-ci:

Les stratégies peuvent contenir plus de méthodes que nécessaire pour prendre en
charge tous les cas d'autorisation d'un modèle.
Autorisation
Autoriser des actions avec des stratégies

Via le modèle de l'utilisateur


Le modèle Laravel User contient deux méthodes d'aide aux autorisations à l'aide de
Policies ; can et can't . Ces deux peuvent être utilisés pour déterminer si un utilisateur
a une autorisation ou non sur un modèle respectivement.
Pour vérifier si un utilisateur peut afficher un contenu ou non, vous pouvez effectuer les
opérations suivantes:
Autorisation
Autoriser des actions avec des stratégies

Via les middlwares


Laravel comprend un middleware qui peut autoriser des actions avant même que la
requête entrante n'atteigne vos itinéraires ou vos contrôleurs. Par défaut, le
Illuminate\Auth\Middleware\Authorizemiddleware se voit attribuer la canclé dans votre
App\Http\Kernelclasse.
Autorisation
Autoriser des actions avec des stratégies

Via les Controllers


Laravel fournit une méthode d'assistance, appelée authorize qui prend le nom de la
stratégie et le modèle associé comme arguments et autorise l'action en fonction de
votre logique d'autorisation ou refuse l'action et lance une exception
AuthorizationException que le gestionnaire Laravel Exception convertit en 403 HTTP
response
Autorisation
Autoriser des actions avec des stratégies

Via les Controllers


Laravel fournit une méthode d'assistance, appelée authorize qui prend le nom de la
stratégie et le modèle associé comme arguments et autorise l'action en fonction de
votre logique d'autorisation ou refuse l'action et lance une exception
AuthorizationException que le gestionnaire Laravel Exception convertit en 403 HTTP
response
Autorisation
Autoriser des actions avec des stratégies

Via le blade
Lors de l'écriture de modèles Blade, vous souhaiterez peut-être afficher une partie de la
page uniquement si l'utilisateur est autorisé à effectuer une action donnée.
Pour utiliser l'exemple ci-dessus sur un modèle du blade afin de masquer le contenu de
l'utilisateur, vous devez généralement procéder comme suit:

On peut utiliser @cannot pour référer à l’inverse de @can


Développer en back-end

Module : Approfondir la programmation Laravel


C.2. Interagir avec la base de données
C.2.1. Mise en Route

M DAIF OTHMANE
Introduction
La quasi-totalité des applications web modernes nécessitent une interaction avec une
base de données. Laravel simplifie grandement cette interaction avec diverses bases de
données en offrant des options telles que l'utilisation de SQL brut, un générateur de
requêtes fluide, et l'utilisation de l'ORM Eloquent. Actuellement, Laravel propose un
support intégré pour cinq bases de données de premier plan :
Configuration de la base de données
La configuration des services de base de données de Laravel se trouve dans
config/database.php ,le fichier de configuration de votre application. Dans ce fichier,
vous pouvez définir toutes vos connexions à la base de données, ainsi que spécifier
quelle connexion doit être utilisée par défaut.

Si on veut configuré les bases de données SQLite se trouvent dans un seul fichier.
Créez une nouvelle base avec touch database/database.sqlite. Configurez ensuite vos
variables d'environnement en spécifiant le chemin absolu de cette base dans
DB_DATABASE
Connexion
 Parfois, vous souhaiterez peut-être utiliser une connexion à la base de données
pour les instructions SELECT et une autre pour les instructions INSERT, UPDATE et
DELETE. Pour voir comment les connexions en lecture/écriture doivent être
configurées, regardons cet exemple :
Exécuter des requêtes SQL
Une fois que vous avez configuré votre connexion à la base de données, vous pouvez
exécuter des requêtes en utilisant la DBfaçade. La DBfaçade fournit des méthodes pour
chaque type de requête : select, update, insert, delete et statement
Exécuter une requête de sélection:

Dans cet exemple, le ? dans la requête SQL est un paramètre de liaison de valeur. Le
tableau [1] est fourni en deuxième argument de la méthode select pour spécifier la
valeur réelle à lier à ce paramètre. Cela signifie que le 1 sera lié au paramètre ? de
manière sécurisée.
Exécuter des requêtes SQL
Sélection de valeurs scalaires :

Laravel offre la méthode scalar() pour récupérer directement une valeur scalaire unique
résultant d'une requête de base de données, simplifiant ainsi le processus sans
nécessiter l'extraction d'un objet enregistrement.

Utilisation de liaisons nommées :


Au lieu d'utiliser ? pour représenter vos liaisons de paramètres, vous pouvez exécuter
une requête en utilisant des liaisons nommées :
Exécuter des requêtes SQL
Insertion :

mise à jour :

Suppression :
Gestion des transactions
Une transaction de base de données est un ensemble d'opérations SQL qui sont
exécutées comme une seule unité atomique. Cela signifie que soit toutes les opérations
réussissent et les modifications sont enregistrées de manière permanente dans la base
de données, soit aucune des opérations n'est effectuée si l'une d'entre elles échoue.

Vous pouvez utiliser la méthode fournie par la DBfaçade pour exécuter un ensemble
d'opérations au sein d'une transaction de base de données. Si l'une de ces opérations
échoue, la transaction sera annulée, et les modifications apportées par ces requêtes
SQL seront annulées, maintenant ainsi la cohérence des données.

La transaction méthode accepte un deuxième argument facultatif qui définit le


nombre de fois qu'une transaction doit être réessayée en cas de blocage. Une fois ces
tentatives épuisées, une exception sera levée
Gestion des transactions
Utilisation manuelle des transactions:
 Démarrage de transaction

 Annulation de transaction

 Validation
Connexion la Commun Line Interface (CLI)
La connexion à la CLI (Command-Line Interface) de base de données fait référence à
l'utilisation d'une interface en ligne de commande pour interagir directement avec un
système de gestion de base de données (SGBD) sans passer par une interface
utilisateur graphique ou une application tierce.
 Pour ce connecter au base de données par defaut via CLI :

 Inspection du bases de données:

Vous pouvez spécifier quelle connexion à la base de données doit être inspectée en
fournissant le nom de la connexion à la base de données à la commande via l'ajout a la
fin de : --database=option_du_base

 Aperçu du tableau:
Développer en back-end

Module : Approfondir la programmation Laravel


C.2. Interagir avec la base de données
C.2.2. Générateur de requêtes (Query Builder) :

M DAIF OTHMANE
Générateur de requêtes (Query Builder) :
 Le Générateur de Requêtes (Query Builder) de Laravel est un ensemble de
méthodes qui permettent de construire des requêtes SQL de manière fluide et
expressive en utilisant une syntaxe orientée objet.
 le générateur de requêtes de base de données de Laravel offre une approche
sécurisée, pratique et compatible avec tous les principaux systèmes de bases de
données pris en charge par le framework. Son utilisation facilite la construction de
requêtes SQL tout en renforçant la sécurité de votre application contre les attaques
par injection SQL.

Select :

Join :
Générateur de requêtes (Query Builder) :
Union :

where :

When:

Ordering :

Grouping
Générateur de requêtes (Query Builder) :
Limit et Offset :

Insert :

Update

Delete
Verrouillage
Le générateur de requêtes comprend également quelques fonctions pour vous aider à
réaliser un « verrouillage pessimiste » lors de l'exécution de vos select
instructions. Pour exécuter une instruction avec un « verrou partagé », vous pouvez
appeler la sharedLock méthode. Un verrou partagé empêche la modification des
lignes sélectionnées jusqu'à ce que votre transaction soit validée :

Alternativement, vous pouvez utiliser lockForUpdate. Un verrou "pour mise à jour"


empêche que les enregistrements sélectionnés soient modifiés ou sélectionnés avec un
autre verrou partagé :
Débogage
Lors de la création d'une requête dans Laravel, vous avez la possibilité d'utiliser les
méthodes dd et dump pour faciliter le débogage.

Lors de la construction de requêtes dans Laravel, vous pouvez utiliser les méthodes
dumpRawSql et ddRawSql pour obtenir le SQL final généré par la requête, avec toutes
les liaisons de paramètres correctement substituées.
Pagination
La pagination est une technique utilisée pour diviser une liste étendue de résultats en
plusieurs pages, ce qui améliore la navigation et l'expérience utilisateur. Dans le
contexte des bases de données et des frameworks web comme Laravel, la pagination
est souvent utilisée pour présenter de grandes quantités de données de manière plus
gérable.
Supposons que nous voulions utiliser la méthode paginate sur une requête, et dans cet
exemple, nous spécifions simplement le nombre d'éléments que nous souhaitons
afficher par page, disons 10 éléments.
Pagination
Pagination simple :
Disons que vous voulez simplement afficher les liens Suivant et Précédent sur votre vue
de pagination. Laravel vous fournit cette option en utilisant la méthode simplePaginate .

Lorsque vous utilisez les méthodes paginate ou simplePaginate sur une requête
Eloquent dans Laravel, vous recevez une instance de Paginator. Pour paginate, c'est
Illuminate\Pagination\LengthAwarePaginator, et pour simplePaginate, c'est
Illuminate\Pagination\Paginator. Ces instances offrent des méthodes et peuvent être
itérées comme des tableaux.

Une fois les résultats paginés obtenus, vous pouvez facilement créer des liens de
pagination en utilisant le moteur de template Blade de Laravel
Pagination
Modification des vues de pagination
Lorsque vous utilisez la pagination laravel, vous êtes libre d'utiliser vos propres vues
personnalisées. Ainsi, lorsque vous appelez la méthode links sur une instance de
paginateur, transmettez le nom de la vue comme premier argument à la méthode,
comme:

Ou :
Vous pouvez personnaliser les vues de pagination en les exportant dans votre
répertoire resources/views/vendor à l'aide de la commande vendor: publish:

Cette commande place les vues dans le répertoire resources/views/vendor/pagination .


Le fichier default.blade.php dans ce répertoire correspond à la vue de pagination par
défaut. Editez ce fichier pour modifier le code HTML de la pagination.
Gestion des migrations

◦ La gestion des migrations dans Laravel simplifie la création, modification et


suppression de la structure de la base de données de manière versionnée et
contrôlée par le code.
◦ Facilite la collaboration cohérente des développeurs sur le schéma de la base
de données, évitant les divergences entre les environnements de
développement et de production.
◦ Offre une approche versionnée pour définir et appliquer des changements,
assurant une uniformité dans la structure de la base de données et minimisant
les erreurs liées aux différences d'environnement.

Génération :
Utilisez la commande artisan make:migration pour créer un nouveau fichier de
migration. Par exemple, pour créer une migration pour la table « flights », vous
pouvez exécuter la commande suivante dans le terminal :
Gestion des migrations
Structure :
Méthode up :
La méthode up est utilisée pour définir les modifications à apporter à la base de
données. C'est ici que vous spécifiez la création de tables, de colonnes, d'index, etc.

Méthode down :
La méthode down est utilisée pour spécifier les instructions d'annulation des
modifications définies dans la méthode up. Par exemple, si la migration crée une
table, la méthode down devrait inclure les instructions pour supprimer cette table.
Gestion des migrations
Exécuter des migrations :
A la fin de l'exécution de toutes vos classes de migration, vous pouvez exécuter la
commande artisan:

Cela créera vos tables et vos colonnes dans votre base de données. Les autres
commandes de migration utiles sont les suivantes:

 php artisan migrate:rollback - Annule la migration de la dernière base de


données
 php artisan migrate:reset - Restauration de toutes les migrations de bases de
données
 php artisan migrate:refresh - Réinitialise et réexécute toutes les migrations
 php artisan migrate:status - Affiche le statut de chaque migration
Gestion des migrations
Manipulation des tables :

1. Création des tables :


Pour créer une nouvelle table de base de données, utilisez la méthode create sur la
Schemafaçade. La méthode create accepte deux arguments : le premier est le nom
de la table, tandis que le second est une fermeture qui reçoit un Blueprintobjet
pouvant être utilisé pour définir la nouvelle table :

1. Détermination de l'existence d'une table/colonne


Gestion des migrations
Manipulation des tables :

 Connexion à la base de données et options de table


Si vous souhaitez effectuer une opération de schéma sur une connexion à la base de
données qui n'est pas la connexion par défaut de votre application, utilisez la
connectionméthode :

 Mise à jour des tableaux


La méthode table sur Schemafaçade peut être utilisée pour mettre à jour les
tableaux existants. la méthode accepte deux arguments : le nom de la table et une
fermeture qui reçoit une Blueprintinstance que vous pouvez utiliser pour ajouter
des colonnes ou des index à la table :
Gestion des migrations
Manipulation des tables :

 Renommer un tableau

 Supprimer un tableau
Gestion des migrations
Manipulation des Colonnes :

 Ajouter une nouvelle colonne :


Pour ajouter une nouvelle colonne à une table existante, utilisez la méthode
addColumn dans la méthode up du fichier de migration.

 Modificateurs de colonne
il existe plusieurs « modificateurs » de colonnes que vous pouvez utiliser lors de l'ajout
d'une colonne à une table de base de données. Par exemple, pour rendre la colonne
"nullable", vous pouvez utiliser la nullableméthode :
Gestion des migrations
Manipulation des Colonnes :

 Ordre des colonnes


Lors de l'utilisation de la base de données MySQL, la afterméthode peut être utilisée
pour ajouter des colonnes après une colonne existante dans le schéma :

 Modification des colonnes


La méthode change permet de modifier le type et les attributs des colonnes existantes.
Par exemple, vous souhaiterez peut-être augmenter la taille d'une string colonne. Pour
voir la change méthode en action, augmentons la taille de la namecolonne de 25 à 50.
Pour ce faire, nous définissons simplement le nouvel état de la colonne puis appelons la
change méthode :
Gestion des migrations
Manipulation des Colonnes :
 Renommer les colonnes
Pour renommer une colonne, vous pouvez utiliser renameColumn fournie par le
générateur de schéma :

 Suppression de colonnes
Pour supprimer une colonne, vous pouvez utiliser dropColumn du générateur de
schéma :
Gestion des migrations
Manipulation des Indexs :
Dans Laravel, l'ajout d'index à une table de base de données est une pratique courante
pour améliorer les performances lors de l'exécution de requêtes de recherche.Vous
pouvez ajouter différents types d'index, tels que des index simples, des index uniques et
des index de clé étrangère.
 Ajouter un index simple :

 Ajouter un index unique :


Gestion des migrations
 Ajouter un index à plusieurs colonnes :

 Types d'index disponibles:


Gestion des migrations
 Renommer les index:

 Suppression d'index:

Vous aimerez peut-être aussi