Бортовой журнал Ктулху

Symfony2: добавить колонку в таблицу

В Symfony2 есть свои инструменты для работы с базой, поэтому логичнее воспользоваться ими.

Нужно добавить в существующую таблицу например одну колонку используя встроенные в Symfony возможности.

 

Открываем сущность нашего бандла, это файл в папке Entities, в нем перечислены используемые колонки таблицы в виде переменных с названием этих смых колонок и геттеров - сеттеров.

// src/AppBundle/Entity/Product.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="product")
*/
class Product {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=100)
*/
private $name;
/**
* @ORM\Column(type="decimal", scale=2)
*/
private $price;
/**
* @ORM\Column(type="text")
*/
private $description;
}

Добавим сюда новую колонку, например пусть будет $description.

/**
* @ORM\Column(type="text")
*/
private $description

Затем в консоли запускаем:

php app/console doctrine:generate:entities %AppName%/UserBundle/Entity/User

* %AppName% - название приложения, будет отличаться.

* UserBundle - название моего бандла которое может отличаться.

* User - название сущности которая используется в примере.

Ответ будет примерно таким:

Generating entity "Crm\UserBundle\Entity\User"
> backing up User.php to User.php~
> generating Crm\UserBundle\Entity\User

Значит все хорошо.

Создадутся примерно такие геттеры и сеттеры:

 

/** * Set description
*
* @param string $facebookUserName
*
* @return User
*/
public function setDescription($description)
{
$this->description = $description; return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}

Создаем сущности:

php app/console doctrine:generate:entities Crm/UserBundle/Entity/User

И не забыть обновить схему:

php app/console doctrine:schema:update --force