Symfony6, 7 Techwall #24 Doctrine l'ORM Les entités

preview_player
Показать описание
Symfony6, 7 Techwall #24 Doctrine l'ORM Les entités

Les entités sont des Objet PHP

Les entités représente les objets PHP équivalentes à une table de la base de données.

Une entité est généralement composée par les attributs de la tables ainsi que leurs getters et setters

Rôle : Faire le lien entre les entités et les tables de la base de données
Lien à travers les métadonnées
Remarque : Un seul format par bundle (impossibilité de mélanger)
Syntaxe :
/**
* les différentes annotations
*/
Remarque : Afin d’utiliser les annotations il faut ajouter :
use Doctrine\ORM\Mapping as ORM;

Permet de définir un objet comme une entité
Applicable sur une classe
Placée avant la définition de la classe en PHP
Syntaxe :
@ORM\Entity
Paramètres :
repositoryClass (facultatif). Permet de préciser le namespace complet du repository qui gère cette entité.
Exemple :
@ORM\Entity(repositoryClass="Rt4\AsBundle\Entity\animalRepository")

Permet de spécifier le nom de la table dans la base de données à associer à l'entité
Applicable sur une classe et placée avant la définition de la classe en PHP
Facultative sans cette annotation le nom de la table sera automatiquement le nom de l'entité
Généralement utilisable pour ajouter des préfixes ou pour forcer la première lettre de la table en minuscule
Syntaxe : @ORM\Table()
Exemple :
/**
*
* @ORM\Table(‘animal’)
* @ORM\Entity(repositoryClass="Rt4\AsBundle\Entity\animalRepository")
*/

Permet de définir les caractéristiques de la colonne concernée
Applicable sur un attribut de classe juste avant la définition PHP de l'attribut concerné.
Syntaxe : @ORM\Column()
Exemple :
/**
*
* @ORM\Column(param1="valParam1" ,param2="valParam2")
*/

Manipulable par l’ORM
Configuration Externe : YAML, XML, PHP
Configuration Interne : annotations
Choix de la configuration ?
Deux Visions :
Pro-Externe
Séparation complète des fonctionnalités spécialement lorsque l’entité est conséquente
Pro-Interne
Plus facile et agréable de chercher dans un seul fichier l’ensemble des information, plus de visibilité

ORM : Object Relation Mapper
Couche d’abstraction
Gérer la persistance des données
Mapper les tables de la base de données relationnelle avec des objets
Crée l'illusion d'une base de données orientée objet à partir d'une base de données relationnelle en définissant des correspondances entre cette base de données et les objets du langage utilisé.
Propose des méthodes prédéfinies
Doctrine utilise deux design pattern objet :
Data Mapper
Unit of Work
C’est la couche entre les objets (entités) et les tables de la base de données.
Dans le cas de PHP elle synchronise les données stockées en base de données avec vos objets PHP.
Elle se charge d’insérer et de mettre à jour les données de la base en se basant sur le contenu des propriété de votre objet.
Elle peut aussi supprimer des enregistrement de la base de données.
Elle peut aussi hydrater vos objets en utilisant les informations contenues dans la base de données.
Ceci permet d’avoir une abstraction complète de la base de données vu que les objets sont indépendants du système de stockage. C’est le Data Mapper qui se charge de ca.

Doctrine implémente ce design pattern via l’objet EntityManager.

Afin d’éviter une multitude de petite requêtes envoyé à votre base de données, et de garder un historique des requetés effectuées au niveau de votre base de données, Doctrine utilise le design pattern Unit of work.
Pour une raison de performance et d'intégrité, La synchronisation effectuée par l'Entity Manager ne se fait pas pour chaque changement avec la base de données.
Le design pattern Unit of Work permet de gérer l'état des différents objets hydratés par l'Entity Manager.
Une transaction est ouverte regroupant l’ensemble des opérations. Le commit de cette transaction déclenchera l’exécution de l’ensemble de ses requêtes.
En cas d’échec l’ensemble des requêtes et annulées.
Рекомендации по теме
Комментарии
Автор

Coach, je suis bloqué lors de la création de la BD.
erreur :
In ExceptionConverter.php line 117:

An exception occurred in the driver: could not find driver


In Exception.php line 28:

could not find driver


In Driver.php line 28:

could not find driver


doctrine:database:create [-s|--shard SHARD] [-c|--connection [CONNECTION]] [--if-not-exists]

gaetankulemfuka