Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
prog:symfony:entities:entity [27/10/2019 14:34] thierry [Types de champs possibles] |
prog:symfony:entities:entity [13/09/2022 16:17] (Version actuelle) thierry [Création] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Symfony et les Entities (Entity)====== | ====== Symfony et les Entities (Entity)====== | ||
- | Avant de jouer avec les Entities il faut que la [[prog:symfony:databases|base de données soit paramétrée et créée]]. | + | ===== Prérequis ===== |
+ | |||
+ | Avant de jouer avec les Entities il faut que la [[prog:symfony:doctrine:databases|base de données soit paramétrée et créée]]. | ||
+ | |||
+ | -> Source : [[https://symfony.com/doc/current/doctrine.html#configuring-the-database]] | ||
+ | |||
+ | ===== Entity ===== | ||
+ | |||
+ | Une Entity est un **Objet PHP** qui sera stocké en base de donnée via l'ORM de Symfony | ||
+ | |||
+ | Pour créer une Entity on utilisera la commande ''symfony console make:entity %EntityName%'' (voir ci-dessous). | ||
+ | |||
+ | -> Source : [[https://symfony.com/doc/current/doctrine.html#creating-an-entity-class]] | ||
===== Création d'une Entity ===== | ===== Création d'une Entity ===== | ||
Ligne 12: | Ligne 24: | ||
* **Online_Date** : Date | * **Online_Date** : Date | ||
==== make:entity ==== | ==== make:entity ==== | ||
- | Avec la console ''php bin\console make:entity'' | + | Avec la console ''php bin\console make:entity'' ou ''symfony console make:entity'' |
<code> | <code> | ||
D:\webprojects\test-api-project>php bin\console make:entity | D:\webprojects\test-api-project>php bin\console make:entity | ||
Ligne 298: | Ligne 310: | ||
</code> | </code> | ||
+ | === Fichier Repository généré === | ||
+ | <code php src/Repository/ProjectsRepository.php> | ||
+ | <?php | ||
+ | |||
+ | namespace App\Repository; | ||
+ | |||
+ | use App\Entity\Projects; | ||
+ | use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; | ||
+ | use Doctrine\Common\Persistence\ManagerRegistry; | ||
+ | |||
+ | /** | ||
+ | * @method Projects|null find($id, $lockMode = null, $lockVersion = null) | ||
+ | * @method Projects|null findOneBy(array $criteria, array $orderBy = null) | ||
+ | * @method Projects[] findAll() | ||
+ | * @method Projects[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) | ||
+ | */ | ||
+ | class ProjectsRepository extends ServiceEntityRepository | ||
+ | { | ||
+ | public function __construct(ManagerRegistry $registry) | ||
+ | { | ||
+ | parent::__construct($registry, Projects::class); | ||
+ | } | ||
+ | |||
+ | // /** | ||
+ | // * @return Projects[] Returns an array of Projects objects | ||
+ | // */ | ||
+ | /* | ||
+ | public function findByExampleField($value) | ||
+ | { | ||
+ | return $this->createQueryBuilder('p') | ||
+ | ->andWhere('p.exampleField = :val') | ||
+ | ->setParameter('val', $value) | ||
+ | ->orderBy('p.id', 'ASC') | ||
+ | ->setMaxResults(10) | ||
+ | ->getQuery() | ||
+ | ->getResult() | ||
+ | ; | ||
+ | } | ||
+ | */ | ||
+ | |||
+ | /* | ||
+ | public function findOneBySomeField($value): ?Projects | ||
+ | { | ||
+ | return $this->createQueryBuilder('p') | ||
+ | ->andWhere('p.exampleField = :val') | ||
+ | ->setParameter('val', $value) | ||
+ | ->getQuery() | ||
+ | ->getOneOrNullResult() | ||
+ | ; | ||
+ | } | ||
+ | */ | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
Ligne 312: | Ligne 379: | ||
</code> | </code> | ||
Voir : [[https://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html]] | Voir : [[https://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html]] | ||
+ | === Fichier de migration généré === | ||
+ | <code php src/Migrations/Version20191027131103.php> | ||
+ | <?php | ||
+ | |||
+ | declare(strict_types=1); | ||
+ | |||
+ | namespace DoctrineMigrations; | ||
+ | |||
+ | use Doctrine\DBAL\Schema\Schema; | ||
+ | use Doctrine\Migrations\AbstractMigration; | ||
+ | |||
+ | /** | ||
+ | * Auto-generated Migration: Please modify to your needs! | ||
+ | */ | ||
+ | final class Version20191027131103 extends AbstractMigration | ||
+ | { | ||
+ | public function getDescription() : string | ||
+ | { | ||
+ | return ''; | ||
+ | } | ||
+ | |||
+ | public function up(Schema $schema) : void | ||
+ | { | ||
+ | // this up() migration is auto-generated, please modify it to your needs | ||
+ | $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.'); | ||
+ | |||
+ | $this->addSql('CREATE TABLE projects (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(40) NOT NULL, url VARCHAR(255) NOT NULL, vmaj INT NOT NULL, vmin INT NOT NULL, revision INT NOT NULL, construction INT NOT NULL, online_date DATE 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->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.'); | ||
+ | |||
+ | $this->addSql('DROP TABLE projects'); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
==== doctrine:migrations:migrate ==== | ==== doctrine:migrations:migrate ==== | ||
<code> | <code> | ||
Ligne 339: | Ligne 446: | ||
=== Résultats de la migration === | === Résultats de la migration === | ||
{{:prog:symfony:table_projetcs.png|}} | {{:prog:symfony:table_projetcs.png|}} | ||
+ | ====== Resources ====== | ||
+ | * [[https://symfony.com/doc/current/doctrine.html]] | ||
+ | |||