Databases : Doctrine
Installer doctrine (et maker par la même occasion):
composer require doctrine maker
Configuration
Définir la variable DATABASE_URL dans le fichier .env à la racine du projet :
# .env # customize this line! DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name" # to use sqlite: # DATABASE_URL="sqlite:///%kernel.project_dir%/var/app.db"
Création base de données
Création de la base mentionnée dans le fichier de configuration :
php bin/console doctrine:database:create
Génération d'une classe métier
php bin/console make:entity Product
Le code généré est le suivant :
namespace App\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass="App\Repository\ProductRepository") */ class Product { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; // add your own fields }
Ajout d'attributs et mise à jour de la base
Ajout des champs name et price :
namespace App\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass="App\Repository\ProductRepository") */ class Product { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string", length=100) */ private $name; /** * @ORM\Column(type="decimal", scale=2, nullable=true) */ private $price; }
Génération du script de mise à jour :
php bin/console doctrine:migrations:diff
Exécution des mises à jour :
php bin/console doctrine:migrations:migrate
Génération des classes depuis la base de données
php bin/console doctrine:mapping:convert --from-database annotation ./src/Entity