Doctrine dans le FrameWork Symfony 3
Si on utilise la ligne de commande suivante pour créer une entité, cela générera-t-il aussi la classe Repository de l'entité?
>php bin/console doctrine:generate:entity
Oui
Quel Bundle doit-on installer afin de pouvoir exécuter nos fixtures en ligne de commande et ainsi remplire notre base de données?
DoctrineFixturesBundle
Le Bundle de Fixtures de Doctrine
Quelles sont les étapes d'installation et d'utilisation des fixtures?
Oui
Peut-on indiquer à Doctrine l'ordre de chargement de nos fixtures afin de les exécuter dans l'ordre désiré?
Oui
Une simple fixture sans partage d'objets doit
Une fixture qui partage des objets doit
Quelle est l'utilité des Fixtures?
Elles sont utiles pour charger un lot contrôlé de données dans une base de données afin de la tester ou de la remplir correctement.
Symfony possède-t-il par défaut le Bundle qui lui permet d'utiliser les fixtures?
Non
Que sont les fixtures?
Des classes PHP dans lesquels on crée des objets (instances d'entité) pour les persister en base de données.
Dans quel répertoire doit-on écrire nos fixtures?
Dans le répertoire
scr\NomDuBundle\DataFixtures\ORM
Peut-on parfois avoir besoin de charger des services dans nos fixtures?
Oui
Quelle interface doit-on utiliser en plus de l'interface ''FixtureInterface'' pour pouvoir charger nos services dans nos fixtures?
L'Interface ''ContainerAwareInterface''
Quels sont les 3 types de Fixtures?
Qu'est-ce qu'une relation Many To Many?
C'est une relation que permet à plusieurs intances d'une entité d'être en relation avec plusieurs intances d'une autre entité.
Pour une relation Many To Many entre deux entités, Doctrine créra-t-il une table intermédiaire?
Oui
Quand on utilise Doctrine, utilise-t-on des objets dans notre code et Doctrine s'occupe-t-il de la base de données?
Oui
Dans une relation Many To Many unidirectionnelle entre deux entités A et B, l'entité A propriétaire a-t-elle un attribut qui contient une instance de ArrayCollection afin de pouvoir contenir toutes les instances de l'entité B?
Oui
Le nom de cet attribut est le nom de l'entité B au pluriel.
Dans une relation Many To Many bidirectionnelle entre deux entités A et B, chaque entité a-t-elle un attribut qui contient une instance de ArrayCollection afin de contenir toutes les instances de l'autre entité?
Que doit-on faire dans le constructeur d'une entité A qui est liée de manière OneToMany ou ManyToMany à une entité B?
L'attribut qui recevra les instances de l'entité B doit contenir une instance de ArrayCollection.
Une relation ManyToMany existe entre l'entité Advert et Category.
Un ''persiste'' de l'entité Advert entraine un ''persiste'' de l'entité Category.
Quelles sont les 3 méthodes pour cet attribut categories?
La ligne de commande suivante videra-t-elle toute la base de données avant de charger les fixtures?
>php bin/console doctrine:fixtures:load
Oui
Quelle est la ligne de commande qui nous permet de charger nos fixtures sans vider la base de données avant?
>php bin/console doctrine:fixtures:load --append
Dans un template Twig peut-on utiliser la méthode ''empty'' de la classe ArrayCollection pour savoir si une liste d'instances d'une entité est vide?
Qu'est-ce qu'une relation ManyToMany avec attribut?
C'est une relation ManyToMany entre deux entités A et B que l'on complète avec une information supplémentaire située dans un attribut.
Cet attribut se trouve dans une entité supplémentaire AB que l'on met en relation avec les entités A et B sous la forme de deux relations OneToMany et ManyToOne.
One (A) To Many (AB) Many (AB) To One (B)
Quel est l'objectif d'une relation bidirectionnelle?
C'est de rendre possible l'accès à l'entité propriétaire depuis l'entité inverse.
Etapes 1 et 2 sont-elles utilisées pour lier 2 entités A et B en ManyToMany Bidirectionnelle?
Oui
Dans le repository d'une entité A, quelle ligne de code plus simple est équivalente à:
$this->_em->createQueryBuilder()
->select('a')->from($this->_entityName, 'a')
$this->createQueryBuilder('a')
Dans la méthode d'un contrôleur comment récupérer le repository d'une entité A?
$em = $this->getDoctrine()->getManager();
$repository = $em->getRepository('NomDuBundle:NomEntité');
La classe repository d'une entité, hérite de quelle classe?
La classe
\Doctrine\ORM\EntityRepository
Citez quelques méthodes de la classe EntityRepository
Citez deux méthodes émulées, prises en charge par la méthode magique __call() de la classe EntityRepository.
Où X est le nom d'une propriété de l'entité
Quelle méthode est strictement égale à
findBy(array('author' => 'Alexandre'))
findByAuthor('Alexandre')
Quelles sont les deux manières de récupération de nos entités depuis un repository?
Quel est l'avantage d'utiliser le queryBuilder pour récupérer ses entités?
On peut construire sa requête en plusieurs étapes
Toutes les fonctions SQL sont-elles implémentées en DQL?
Non
Citez quelques méthodes de la classe QueryBuilder
De manière générale, où doit-on faire nos requêtes afin de récupérer nos entités?
Dans le repository de l'entité.
Dans un contrôleur, peut-on récupérer une entité en utilisant des méthodes basiques du repository de l'entité?
Quels sont les moyens dont-on dispose pour récupérer nos entités situées dans notre BDD?
Généralement, dans notre contrôleur, utilise-t-on nos méthodes personnelles définies dans les repository de nos entités, pour récupérer nos données de BDD?
Oui
Que doit-on faire pour éviter au maximum les requêtes dans un template?
Quelle est la différence entre l'objet
QueryBuilder
et
Query?
Citez quelques méthodes de l'objet Query.
Depuis un repository, quelle méthode du gestionnaire d'entité utilise-t-on pour créer une requête DQL?
Lorsque l'on fait des requêtes DQL doit-on toujours donner des alias à nos entités?
Comment tester la requête DQL suivante en ligne de commande?
"SELECT a FROM CoreBundle:Advert a"
>php bin/console doctrine:query:dql "SELECT a FROM CoreBundle:Advert a"
Si l'on utilise une entité dont on a récupère les entités liées avec une jointure, pourra-t-on se servir de ses assesseurs sans craindre des requêtes supplémentaires?
Oui