我想向现有客户实体添加一个新的唯一令牌列。
我知道我需要更改客户类,更新模式,为每个客户创建唯一的令牌。
这在开发中很容易,因为我只需从数据库中擦除数据并开始新的工作。但我不能在生产数据库上这样做。
那么,做出这种改变的正确或适当的方法是什么?
以下是我对Customer.php的更改:
/**
* Customer
*
* @ORMTable()
* @ORMEntity(repositoryClass="AppBundleEntityCustomerRepository")
* @UniqueEntity("urlToken")
*/
class Customer
{
...
/**
* @var string
*
* @ORMColumn(name="urlToken", type="string", unique=true)
*/
private $urlToken;
在生产中部署架构更改的正确方法是使用Doctrine迁移。
1) 修改实体类
2) 生成条令迁移:
$ ./doctrine migrations:diff
3) 必要时更新条令代理类:
$ ./doctrine orm:generate:proxies
4) 在生产上执行迁移:
$ ./doctrine migrations:migrate