Symfony6 et Symfony 7 Techwall #31 Doctrine Repository findBy nav de paginatin automatique

preview_player
Показать описание
Symfony6 et 7 Techwall #31 Doctrine Repository findBy nav de paginatin automatique

findBy()
Rôle : retourne l’ensemble des entités qui correspondent à l’entité associé au repositorie comme findAll sauf qu’elle permet d’effectuer un filtrage sur un ensemble de critère passés dans un Array. Elle offre la possibilité de trier les entités sélectionnées et facilite la pagination en offrant un nombre de valuer de retour.
Synatxe:
$repository-findBy( array $criteria, array $orderBy = null, $limit = null, $offset = null);
Exemple :
$listeEtudiants = $repository-findBy(array('section' = 'RT4','nom' = 'Mohamed'),
array('date' = 'desc'),10, 0);

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.
Рекомендации по теме
Комментарии
Автор

Bonjour. Super tuto sur la pagination sans bundle. C'est très instructif merci. Bonne continuation.

robingouverner
Автор

Très interessant, plus je regarde les cours plus je comprends la logique, et plus je me dis que tu es le meilleur prof que j'ai vu. merci pour ton investissement

RidaMABROUK
Автор

Merci pour ces tutos trés clairs et trés simplement expliqués.Impatient de suivre la suite...bravo! et bon rétablissement.

chafetonchafeton
Автор

Merci beaucoup pour cette série ! J'ai appris beaucoup de choses en vous suivant :) Avez-vous prévu d'autres vidéos ? Par exemple sur les formulaires, l'authentification, un exemple de projet, ... 😁

Furius
Автор

Hello. I have an error in the code and I can't find the solution. On this line-> $nbPersonne = $repository->count([]); the count() method tells me the following message -> Undefined method 'count'.intelephense(1013) Thank you.

martib.k.
Автор

Salut professeur. Mon repository ne me donne pas accès à la totalité des méthodes prédéfinis. Comme la méthode count. Pour me permettre de faire l'exercice de la pagination. Veuillez m'aider Svp.

amaninyumu