2013-05-07 8 views
5

मेरे schema.ymlसिद्धांत संबंध स्ट्रिंग

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 } 

रिटर्न कुछ संगठनों पूर्णांक मान 0 संग्रहीत है और ऐसी कोई organisation_id है। मेरे आश्चर्य करने के लिए जब मैं इस कोड को चलाने

class organisationActions extends autoOrganisationActions{ 

    public function executeEdit(sfWebRequest $request){ 

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

परिणाम स्ट्रिंग है (1) "0"

क्यों इस एक पूर्णांक वापस नहीं करता है, तो मैं === तुलना कर सकते हैं 0

+0

हाय @jdog, आप किस पर्यावरण और ढेर का उपयोग करते हैं? PHP संस्करण, एसएफ संस्करण (1.4 मुझे लगता है ...), प्रोपेल या सिद्धांत? mysql या postgres? तो मैं आपकी समस्या को दोहरा सकता हूं .... – Matteo

+0

हाय @jdog, मेरे उत्तर के बारे में क्या? – Matteo

+0

हाय @jdog कोई खबर? – Matteo

उत्तर

3

मैं कुछ परीक्षण करें और मुझे लगता है कि एक इकाई के हर मूल्य को जादू कॉल के माध्यम से वापस कर दिया जाता है कि प्रत्येक इकाई मॉडल sfDoctrineRecord की मूल कक्षा _call विधि में होती है। तो call_user_func_array का रिटर्न प्रकार स्ट्रिंग या इंटेल इत्यादि के खिलाफ अलग नहीं लगता है। हमारे पास प्रत्येक इकाई के प्रत्येक क्षेत्र पर लागू वही व्यवहार है, आईडी फ़ील्ड भी।

तो, के रूप में वैकल्पिक हल, आप जांच करने के लिए अपने कस्टम गेटर लागू कर सकते हैं अगर रिकॉर्ड रिक्त है या पहले (आईडी = 0) के रूप में अनुवर्ती आपरेशन की तुलना के लिए:

class Organisation extends BaseOrganisation 
{ 

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

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

      return NULL; 
     } 
    } 

में नियंत्रक:

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

    var_dump($p); 

यह डंप हो जाएगा

NULL 

यदि कोई माता पिता नोड के लिए जुड़ा हुआ नहीं है

और डंप हो जाएगा

int(0) 

अगर यह आईडी = 0

आशा इस मदद

मुझे जानते हैं के साथ तत्व से जुड़ा हुआ है आप इसके बारे में क्या सोचते हैं

+0

हाय @matteo, इस पर वापस आने में देरी के लिए खेद है। मुझे लगता है कि मेरी गलती यह है कि परिणाम वास्तव में शून्य है, जिसे var_dump() की वजह से स्ट्रिंग में डाला जाता है? किसी भी मामले में आपके उत्तर ने मुझे समस्या हल करने में मदद की। – jdog

संबंधित मुद्दे