2013-05-07 12 views
5

Benim schema.ymldoktrin ilişkisi Bazı kuruluşlar saklanan tamsayı değeri 0 ve böyle organisation_id yoktur dize

Organisation: 
    columns: 
    id: { type: integer(4), notnull: true, unique: true, primary: true, autoincrement: true } 
    name: { type: string(100), notnull: true, unique: true } 
    parent_organisation_id: { type: integer(4), notnull: false } 

    relations: 
    ParentOrganisation: { class: Organisation, local: parent_organisation_id, foreignAlias: ChildOrganisations } 

döndürür. Benim için sürpriz bu kodu çalıştırdığınızda

class organisationActions extends autoOrganisationActions{ 

    public function executeEdit(sfWebRequest $request){ 

     $this->organisation = $this->getRoute()->getObject(); 
     $p = $this->organisation->getParentOrganisationId(); 
     var_dump($p); 

sonuç dizesi (1) "0"

Bu neden bir tamsayı dönmez, bu yüzden === 0

+0

Merhaba, hangi ortam ve kümeyi kullanıyorsunuz? PHP Versiyonu, sf versiyonu (1.4 sanırım ...), propel veya doktrin mi? mysql veya postgres? Bu yüzden probleminizi çoğaltabilirim .... – Matteo

+0

Merhaba @jdog, cevabım ne olacak? – Matteo

+0

Merhaba @jdog herhangi bir haber? Bir DB üzerinde – Matteo

cevap

3

I karşılaştırabilirsiniz Bazı testler yapın ve bir varlığın her bir değerinin, sfDoctrineRecord modelinin her bir Varlık modelinin üst sınıfının _call yönteminde yapacağı sihirli çağrıyla döndüğünü görüyorum. Yani call_user_func_array dönüş türü, dizgeye veya int vb. Aykırı görünmüyor. Bu nedenle, her varlığın her alanında uygulanan aynı davranış, kimlik alanı da. Gelen

class Organisation extends BaseOrganisation 
{ 

     public function getParentIdAsIntegerOrNullOtherwise() 
     { 
      $an_id = $this->getParentOrganisationId(); 

      if (! is_null($an_id)) 
      { 
       return intval($an_id); 
      } 

      return NULL; 
     } 
    } 

: aşağıdaki gibi karşılaştırma işlemi için kayıtlar null veya birinci (id = 0) ise, çek için özel getter uygulayabilir geçici çözüm olarak

Yani, kontrolör:

$p = $this->organisation->getParentIdAsIntegerOrNullOtherwise(); 

    var_dump($p); 

O dökümü olacak

NULL 
Herhangi bir üst düğüme bağlı değilse bu id = 0

Hope

bana bildirin bu yardım ile elemana bağlıysa

ve

int(0) 

dökümü hakkında ne düşünüyorsun

+0

Merhaba @matteo, buna geri dönüşün gecikmesi için üzgünüm. Benim hatamın sonucu, aslında var_dump() nedeniyle dizgiye verilen sonuç null olduğunu gösteriyor. Her durumda cevabınız sorunu çözmeme yardımcı oldu. – jdog