Paramètres
Les paramètres sont définis dans le fichier .env, plus précisément :
DATABASE_URL=mysql://symfony:tirlipimpon@127.0.0.1:3306/symfony
Il est à noter l'utilisation d'une couche d'abstraction du moteur de base de données. La connexion et les requêtes sont donc adaptées automatiquement pour Symfony.
Actions sur la base
Création de la base
Même si inutile ici car la base fournie est unique :
$ php bin/console doctrine:database:create
Création des tables
Prévisualisation SQL
Symfony permet de générer le code SQL de création des tables.
$ php bin/console doctrine:schema:update --dump-sql
On obtient alors :
CREATE TABLE profile (id INT AUTO_INCREMENT NOT NULL, battleTag VARCHAR(255) NOT NULL, guildName VARCHAR(255) DEFAULT NULL, paragonLevel INT NOT NULL, date DATETIME NOT NULL, UNIQUE INDEX UNIQ_D87F7E0C94F6134A (battleTag),PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
Pour lancer l'exécution de la requête directement en base :
$ php bin/console doctrine:schema:update --force
Faire évoluer le schéma
Si nous souhaitons ajouter un niveau de paragon saisonnier, on pourrait ajouter le champs dans la définition de la classe.
Mais le plus simple est d'utiliser la console qui va ajouter le nouveau champs ainsi que les accesseurs.
/** * @ORM\Column(type="integer", nullable=true) */ private $paragonLevelSeason; // ... public function getParagonLevelSeason(): ?int { return $this->paragonLevelSeason; } public function setParagonLevelSeason(?int $paragonLevelSeason): self { $this->paragonLevelSeason = $paragonLevelSeason; return $this; }
Il ne reste plus qu'à répercuter la modification dans la base.
Logique métier
Seuls les attributs pertinents doivent être mappés dans la base de données. Même si la base de données n'est pas gérée directement, son schéma bénéficie à respecter les règles de normalisation.
Il faudra donc veiller à ne pas stocker en base des informations en double ou pouvant être déduites d'autres attributs déjà présents.