Doctrine Migrations

From Chorke Wiki
Revision as of 08:40, 13 January 2018 by Shahed (talk | contribs)
Jump to navigation Jump to search

Parameters

# app/config/parameters.yml
parameters:
    database_host: ~
    database_port: ~
    database_name: ~
    database_user: ~
    database_password: ~
    database_path: '%kernel.root_dir%/../var/rdbms/chorke.sqlite '
    mailer_transport: smtp
    mailer_host: 127.0.0.1
    mailer_user: ~
    mailer_password: ~
    secret: ff1a949ebf4d50f1f51a1fb3864f52e9e5c9e136

Doctrine Config

# app/config/config.yml
doctrine:
    dbal:
        driver: pdo_sqlite
        path: '%database_path%'
        charset: UTF8
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

Database Creation

# var/sqlite/.gitkeep
mkdir -p ./var/rdbms/;\
touch ./var/rdbms/.gitkeep

# sqlite database create by doctrine 
bin/console doctrine:database:create
# doctrine migrations dependency require
composer require doctrine/doctrine-migrations-bundle "^1.0"

Migrations Config

Finally, be sure to enable the bundle in AppKernel.php by including the following:

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        //...
        new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
    );
}
# app/config/config.yml
doctrine_migrations:
    dir_name: "%kernel.root_dir%/DoctrineMigrations"
    namespace: Application\Migrations
    table_name: T00000
    name: Application Migrations
    organize_migrations: false

Doctrine Entities

// src/WebappBundle/Entity/T00E00.php
namespace Chorke\Bundle\WebappBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * T00E00
 *
 * @ORM\Table(name="t00e00", uniqueConstraints={
 *     @ORM\UniqueConstraint(name="UNIQ_T00E00_HOST", columns={"host"})
 * })
 * @ORM\Entity(repositoryClass="Chorke\Bundle\WebappBundle\Repository\T00E00Repository")
 */
class T00E00
{
    /**
     * @var int
     *
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(name="id", type="integer")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name_native", type="string", length=255, nullable=true)
     */
    private $nameNative;

    /**
     * @var string
     *
     * @ORM\Column(name="name_english", type="string", length=255)
     */
    private $nameEnglish;

    /**
     * @var string
     *
     * @ORM\Column(name="host", type="string", length=255, unique=true)
     */
    private $host;

    /**
     * @var string
     *
     * @ORM\Column(name="site", type="string", length=255)
     */
    private $site;


    // getter and setter omitted

}
// src/WebappBundle/Entity/T00I00.php
namespace Chorke\Bundle\WebappBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * T00I00
 *
 * @ORM\Table(name="t00i00", uniqueConstraints={
 *     @ORM\UniqueConstraint(name="UNIQ_T00I00_SITE_CODE", columns={"site_code"})
 * })
 * @ORM\Entity(repositoryClass="Chorke\Bundle\WebappBundle\Repository\T00I00Repository")
 */
class T00I00
{
    /**
     * @var int
     *
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(name="id", type="integer")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name_english", type="string", length=255)
     */
    private $nameEnglish;

    /**
     * @var string
     *
     * @ORM\Column(name="name_native", type="string", length=255)
     */
    private $nameNative;

    /**
     * @var string
     *
     * @ORM\Column(name="site_code", type="string", length=4, unique=true)
     */
    private $siteCode;


    // getter and setter omitted

}