2016-03-29 16 views
1

için varolan varlıkta benzersiz bir belirteç sütunu eklemek için uygun geçiş yolu Mevcut bir müşteri varlığına yeni bir benzersiz simge belirtmek istiyorum.Symfony2/doctrine

Müşteri sınıfını değiştirmem, şemayı güncelle, her müşteri için benzersiz belirteç oluşturmam gerektiğini biliyorum.

Verileri veritabanından silip yeni başladığım için bu özellik çok kolay. Ama bunu üretim veritabanında yapamam.

Peki, bu değişikliği yapmak için uygun veya uygun yöntem nedir? İşte

Customer.php benim değişiklikler şunlardır: Üretim Doctrine Migrations kullanmaktır üzerinde

/** 
* Customer 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="AppBundle\Entity\CustomerRepository") 
* @UniqueEntity("urlToken") 
*/ 
class Customer 
{ 

... 

/** 
* @var string 
* 
* @ORM\Column(name="urlToken", type="string", unique=true) 
*/ 
private $urlToken; 
+0

Bir üretim ortamında nasıl devam edeceğinizi soruyorsunuz, ancak sonunda üretim veritabanını değiştirebilirsin, değil mi? – abdiel

+0

Evet, üretim veritabanını değiştirebilirim. Sadece geliştirme işlemini bitirdikten sonra yapmak ve hızlı ve temiz olmak istiyorum. :) – ScottGutman

cevap

1

uygun yolu şema değişiklikleri dağıtmak için. üretim göçler Yürütme)

$ ./doctrine orm:generate:proxies 

4: Gerekirse

$ ./doctrine migrations:diff 

3) Güncelleme doktrini vekil sınıfları:

1) doktrin göçler üret) varlık sınıfı

2 değiştirin:

$ ./doctrine migrations:migrate 
+0

Evet, ama sorun sütunun tekliği. Tüm benzersiz kısıtlamalarla bir geçişte benzersiz verilerle benzersiz bir sütun nasıl oluşturulur? – ScottGutman

+1

Dolayısıyla, geçişleri yürüttüğünüzde: diff, veritabanı şemasının güncellenmesi için yeni bir geçiş sınıfı oluşturulacaktır. Taşıma sınıfını ihtiyaç duyduğunuz şekilde genişletebilir veya değiştirebilirsiniz. Ayrıca, bir göz atabilirsiniz: http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/annotations-reference.html#annref-uniqueconstraint –

+1

Varsayılan geçiş işe yaramadı çünkü sütundaki değerler benzersiz değildi. Ama buna $ $ ekledim-> addSql ('UPDATE customer SET urlToken = uuid()'); ve benzersiz endeks önce benzersiz değerler yaratıldı. Teşekkür ederim. – ScottGutman