diff --git a/migrations/Version20210323164758.php b/migrations/Version20210323164758.php new file mode 100644 index 0000000..6e04263 --- /dev/null +++ b/migrations/Version20210323164758.php @@ -0,0 +1,31 @@ +addSql('CREATE TABLE product (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + } + + public function down(Schema $schema) : void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('DROP TABLE product'); + } +} diff --git a/readme.md b/readme.md index 9087562..d6ed999 100644 --- a/readme.md +++ b/readme.md @@ -10,3 +10,21 @@ Environnement de developpement mis en place avec [symfony-docker-init **@gitea** - chargement d'assets au travers de twig - passage de variables du controller vers la vue twig + + +### Cours 2 - Introduction à l'ORM Doctrine (23/03/2021) + +Objectif de l'ORM, lier la structure de la base de données à ses `Entity` php. + +Pas besoin de se connecter à la console de la base de données en CLI (dans l'idéal) + +Dans l'idéal nous souhaitons tout faire via le code php et la CLI PHP de Symfony. + + **Relations** + +- On fera en sorte que l'objet qui a "un seul" va porter la liaison + +*NOTE: Pattern singloton (cf. pour le requêtage à BDD)* + + + diff --git a/src/Entity/Product.php b/src/Entity/Product.php new file mode 100644 index 0000000..c37572b --- /dev/null +++ b/src/Entity/Product.php @@ -0,0 +1,41 @@ +id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } +} diff --git a/src/Repository/ProductRepository.php b/src/Repository/ProductRepository.php new file mode 100644 index 0000000..c34bb70 --- /dev/null +++ b/src/Repository/ProductRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('p') + ->andWhere('p.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('p.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Product + { + return $this->createQueryBuilder('p') + ->andWhere('p.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +}