2011-02-03 7 views
5

मैं निम्न स्कीमाPHP सिद्धांत: रीफ क्लास अतिरिक्त कॉलम कैसे सेट करें?

User: 
    columns: 
     id: 
      type: integer 
      primary: true 
     name: string 
    relations: 
    UserGroup: 
     local: userGroup_id 
     foreign: id 
     refClass: User2Group 

UserGroup: 
    columns: 
     id: 
      type: integer 
      primary: true 
     name: string 
    relations: 
    User: 
     local: user_id 
     foreign: id 
     refClass: User2Group 

User2Group: 
    columns: 
     user_id: 
      type: integer 
      primary: true 
     userGroup_id: 
      type: integer 
      primary: true 
     extraColumn: string 

है और मैं

$user=new Model_User(); 
     $user->name='user'; 

     $user->UserGroup[0]->name='group'; 
     $user->UserGroup[0]->extraColumn='test'; 

     $user->save(); 

करने के लिए कोशिश कर रहा हूँ, लेकिन यह मेरे लिए एक अपवाद "Doctrine_Record_UnknownPropertyException" संदेश के साथ "पर" "अज्ञात रिकॉर्ड संपत्ति/संबंधित घटक" extraColumn देता है उपयोगकर्ता समूह "", मैं क्या गलत कर रहा हूँ?

उत्तर

3

सिद्धांत वास्तव में तालिका में शामिल होने पर अतिरिक्त कॉलम का समर्थन नहीं करता (मैं द्वारा जिस तरह से कुछ और यह अभी भी काम नहीं करेगा करने के लिए स्थानीय/विदेशी बदलने की कोशिश की है)। लेकिन आप Doctrine_Query का उपयोग कर मानों को एक्सेस और अपडेट कर सकते हैं।

Doctrine_Query::create() 
    ->update('User2Group') 
    ->set('extraColumn', 'Dude its working') 
    ->where('user_id = ?', $user['id']) 
    ->andWhere('userGroup_id = ?', $userGroup['id']) 
    ->execute(); 

यह मान प्राप्त करने के लिए आपको एक चयन क्वेरी करने की आवश्यकता है।

Doctrine::getTable('User')->createQuery('u') 
    ->addSelect('u.*, ug.*, u2g.extraColumn') 
    ->leftJoin('u.UserGroup ug') 
    ->leftJoin('ug.User2Group u2g WITH u2g.user_id = ?', $user['id']) 
    ->execute(); 
+0

जाहिर है कि कम से कम सिद्धांत 1 के साथ कोई अन्य तरीका नहीं है। धन्यवाद! – lunarnet76

+0

कोई समस्या नहीं, मुझे इसे कठिन तरीके से समझना पड़ा – xzyfer