2011-01-28 24 views
7

मैं CodeIgniter मंचCodeIgniter - डेटाबेस: एक ही अद्यतन क्वेरी

पर this देखा के साथ कई तालिकाओं अपडेट करने का तरीका नीचे कोड को ध्यान में रखते

UPDATE a 
INNER JOIN b USING (id) 
SET a.firstname='Pekka', a.lastname='Kuronen', 
b.companyname='Suomi Oy',b.companyaddress='Mannerheimtie 123, Helsinki Suomi' 
WHERE a.id=1; 

इस तरह आप जाहिरा तौर पर Codeigniter

में ऐसा होता है
$this->db->set('a.firstname', 'Pekka'); 
$this->db->set('a.lastname', 'Kuronen'); 
$this->db->set('b.companyname', 'Suomi Oy'); 
$this->db->set('b.companyaddress', 'Mannerheimtie 123, Helsinki Suomi'); 
$this->db->where('a.id', 1); 
$this->db->join('table2 as b', 'a.id = b.id'); 
$this->db->update('table as a'); 

इस वास्तविकता में काम नहीं करता। मैं एसक्यूएल जो इस पैदा करता है और परिणाम भी शामिल होने का उल्लेख नहीं है एक एक नज़र पड़ा है।

किसी को भी कैसे एक में शामिल होने का उपयोग कर Codeigniter के सक्रिय रिकॉर्ड डाटाबेस कक्षा के साथ एक अद्यतन करने के लिए कोई विचार है?

उत्तर

11

एक समाधान जो मैंने पाया है वह पूरी तरह से शामिल होने और शामिल स्थिति को 'जहां' फ़ंक्शन में स्थानांतरित करने के लिए है, आपको नई तालिका को शामिल करने के लिए अद्यतन स्ट्रिंग को बदलने की आवश्यकता होगी।

$this->db->set('a.firstname', 'Pekka'); 
$this->db->set('a.lastname', 'Kuronen'); 
$this->db->set('b.companyname', 'Suomi Oy'); 
$this->db->set('b.companyaddress', 'Mannerheimtie 123, Helsinki Suomi'); 

$this->db->where('a.id', 1); 
$this->db->where('a.id = b.id'); 
$this->db->update('table as a, table2 as b'); 
+1

मैंने सोचा कि मैं किसी को कुछ समय की बचत होगी। आप अन्यथा CodeIgniter टेबल भागने की कोशिश करता है और यह विफल रहता है "के रूप में एक मेज" का उपयोग करने की जरूरत है। –

4

एक transaction के भीतर दो अलग प्रश्नों का उपयोग कर अपनी समस्या को हल करना चाहिए। एक प्रश्न में विफल रहता है एक दूसरे को वापस लुढ़का हो जाता है।

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