2016-03-24 16 views
1

Denetleyicim yeni hesabı talep ettiğinde, varlık müşteri kimliğini otomatik olarak oluşturur. Bu, aşağıdaki kodu ile yapılır: Symfony platformundaki varlıkta veritabanı alanını kontrol edin

/** 
* Set custId 
* 
* @param integer $custId 
* @return Account 
*/ 
private function setCustId() 
{ 
    $this->custId = rand(1000, 9999); 

    return $this; 
} 

Sadece ben zaten veritabanında bir müşteri olup olmadığını kontrol etmek istiyorsanız bu varlıktaki. Bu yüzden aşağıdaki kodu ekleyerek bulun ve ücretsiz bir kimlik bulunana kadar tekrarlayın. Ancak, aşağıdaki kodla veritabanına erişmeyi denedim, ancak bir php hatası alıyorum. Bazıları idee?

+1

Sadece bir fikir. Tesise atamadan önce rastgele sayıyı kontrol etmelisiniz. – pbenard

+0

Yeni bir hesap oluşturulduğunda, __construct işlevi setCustId işlevini başlatır. Bu şekilde CustId tam otomatik gider. – Tom

cevap

0
  1. Sen benzersiz bir kimlik oluşturmak için uniqid kullanabilirsiniz.
  2. İkinci yolu, Doktrin seviyesi:

    @ORM \ GeneratedValue (strateji = "UUID")

Daha

Identifier Generation Strategies hakkında GÜNCELLEME Sen Event Listener oluşturabilir

ve PrePersist olayını kullanın. Bu etkinliğin içinde, varlığınız için herhangi bir kuralları kontrol edebilirsiniz.

+0

Benim kimliğim tamamen benzersiz değil, ancak soruda bunu benzersiz hale getirdim. Kullanılmakta olup olmadığını kontrol etmek için varlığın veritabanından bir değer almanın mümkün olup olmadığını bilmek isterim. – Tom

+0

Etkinlik Dinleyicisini kullanabilirsiniz (güncellenmiş yanıt) –