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