transactions
का उपयोग करना इसका अर्थ है डेटा को सुरक्षित रूप से सम्मिलित करने के लिए डेटाबेस का समर्थन करना। इसलिए कोडनिर्देशक में हम मॉडल . में प्रत्येक डेटाबेस से संबंधित कार्यों को लिखते हैं नियंत्रक में नहीं। . और आपके दूसरे कोड में (जो काम नहीं कर रहा है) आपने वहां पर मॉडल की ओर इशारा किया है।(utils
) इतना आसान मुझे यकीन है कि यह काम नहीं करेगा। क्योंकि यह मॉडल और नियंत्रक समानांतर के साथ एक सम्मिलित डेटा नहीं है। लेन-देन को मॉडल में कोडित किया जाना चाहिए (मैं अपने उत्तर में मॉडल में लिखूंगा )।
इस सामग्री को भी लोड करें
- डेटाबेस लाइब्रेरी
- मॉडल क्लास
- यूआरएल सहायक
- सत्र
मान्यताएं
अपने कोड में आपने $data
. का इस्तेमाल किया है और $test
सरणी के रूप में। तो मुझे लगता है कि डेटा डालने और अपडेट करने के लिए दो सरणी हैं।
आपके डेटा सेट
$data = array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
);
$id = 007;
$test = array(
'title' => $title,
'name' => $name,
'date' => $date
);
आपका कोड
$this->db->trans_start(); # Starting Transaction
$this->db->trans_strict(FALSE); # See Note 01. If you wish can remove as well
$this->db->insert('table_name', $data); # Inserting data
# Updating data
$this->db->where('id', $id);
$this->db->update('table_name', $test);
$this->db->trans_complete(); # Completing transaction
/*Optional*/
if ($this->db->trans_status() === FALSE) {
# Something went wrong.
$this->db->trans_rollback();
return FALSE;
}
else {
# Everything is Perfect.
# Committing data to the database.
$this->db->trans_commit();
return TRUE;
}
नोट
- डिफ़ॉल्ट रूप से कोडनिर्देशक सभी लेनदेन को सख्त मोड में चलाता है। कबसख्त मोड सक्षम है , यदि आप लेन-देन के कई समूह चला रहे हैं, यदि एक समूह विफल रहता है तो सभी समूहों को वापस ले लिया जाएगा। इफ़स्ट्रिक्ट मोड अक्षम है , प्रत्येक समूह का स्वतंत्र रूप से इलाज किया जाता है , अर्थात एक समूह की विफलता किसी अन्य को प्रभावित नहीं करेगी ।