2013-03-11 8 views
7

मैं कोडइग्निटर के साथ कई डेटाबेस का उपयोग करने में देख रहा हूं। यदि मुझे पता है कि डेटाबेस समय से पहले क्या हैं, तो मैं जानकारी को कॉन्फ़िगरेशन फ़ाइल में सेट कर सकता हूं और फिर मुझे जो भी डेटाबेस समूह चाहिए, उसे कॉल कर सकता हूं।कोडइग्निटर: एकाधिक डेटाबेस - दूसरे डेटाबेस में डेटाबेस कॉन्फ़िगरेशन एक्सेस करना

मेरी स्थिति में, हालांकि, मुझे उस डेटाबेस की जानकारी किसी अन्य डेटाबेस में संग्रहीत करने की आवश्यकता है। यह एक डेटाबेस के बारे में सामान्य जानकारी के साथ एक मास्टर डेटाबेस है जिसमें डेटाबेस और प्रमाण-पत्र शामिल हैं जो ग्राहक के डेटा को संग्रहीत करते हैं। यह विक्रेता तब भी ग्राहकों को जोड़ सकता है जब वे चाहते हैं और प्रत्येक ग्राहक के डेटा को अलग-अलग डेटाबेस में अलग किया गया हो।

कोडइग्निटर में मास्टर डेटाबेस से वापस आने वाले मानों के आधार पर मैं डेटाबेस और प्रमाण-पत्र कैसे सेट कर सकता हूं, या ऐसा करने का कोई तरीका भी है?

क्या कोई मुझे सही दिशा में इंगित कर सकता है? किसी भी सलाह के लिए अग्रिम धन्यवाद।

+0

[कोडिनेटर - एकाधिक डेटाबेस कनेक्शन] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/8268853/codeigniter-multiple-database-connections) –

उत्तर

9
डॉक्स से

(http://ellislab.com/codeigniter/user-guide/database/connecting.html):

इस समारोह के पहले पैरामीटर वैकल्पिक अपने कॉन्फ़िग फ़ाइल से एक विशेष डेटाबेस समूह निर्दिष्ट करने के लिए इस्तेमाल किया जा सकता है या आप भी एक के लिए कनेक्शन मूल्यों प्रस्तुत कर सकते हैं डेटाबेस जो आपके कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट नहीं है।

तो तुम कुछ इस तरह करना होगा, मास्टर डेटाबेस से मूल्यों के साथ मूल्यों की जगह:

$config['hostname'] = "localhost"; 
$config['username'] = "myusername"; 
$config['password'] = "mypassword"; 
$config['database'] = "mydatabase"; 
$config['dbdriver'] = "mysql"; 
$config['dbprefix'] = ""; 
$config['pconnect'] = FALSE; 
$config['db_debug'] = TRUE; 
$config['cache_on'] = FALSE; 
$config['cachedir'] = ""; 
$config['char_set'] = "utf8"; 
$config['dbcollat'] = "utf8_general_ci"; 

$this->load->database($config); 

आप मास्टर डेटाबेस से संबंध और ग्राहक बनाए रखने के लिए की जरूरत है डेटाबेस, फिर अंतिम पंक्ति को बदलें:

$customer_db = $this->load->database($config, TRUE); 

// to use the master database: 
$this->db->query("SELECT * FROM my_table"); 

// to then use the customer database: 
$customer_db->query("SELECT * FROM whatever"); 
+1

मुझे पूरी तरह से याद आया कि आप एक सरणी या डीएसएन स्ट्रिंग पास कर सकते हैं (हमेशा मेरा यहां एक प्रश्न पोस्ट करते समय सबसे बुरा डर)। प्रतिक्रिया के लिए बहुत बहुत धन्यवाद! – spacemunkee

6

मास्टर को एक डिफ़ॉल्ट डेटाबेस और दूसरा डेटाबेस
$ active_group = 'default' के लिए ग्राहक बनाएं; $ active_record = TRUE;

$db['default']['hostname'] = ''; 
    $db['default']['username'] = ''; 
    $db['default']['password'] = ''; 
    $db['default']['dbdriver'] = ''; 
    $db['default']['dbprefix'] = ''; 
    $db['default']['pconnect'] = TRUE; 
    $db['default']['db_debug'] = TRUE; 
    $db['default']['cache_on'] = FALSE; 
    $db['default']['cachedir'] = ''; 
    $db['default']['char_set'] = 'utf8'; 
    $db['default']['dbcollat'] = 'utf8_general_ci'; 
    $db['default']['swap_pre'] = ''; 
    $db['default']['autoinit'] = TRUE; 
    $db['default']['stricton'] = FALSE; 

    $db['secondDatabase']['hostname'] = ''; 
    $db['secondDatabase']['username'] = ''; 
    $db['secondDatabase']['password'] = ''; 
    $db['secondDatabase']['dbdriver'] = ''; 
    $db['secondDatabase']['dbprefix'] = ''; 
    $db['secondDatabase']['pconnect'] = TRUE; 
    $db['secondDatabase']['db_debug'] = TRUE; 
    $db['secondDatabase']['cache_on'] = FALSE; 
    $db['secondDatabase']['cachedir'] = ''; 
    $db['secondDatabase']['char_set'] = 'utf8'; 
    $db['secondDatabase']['dbcollat'] = 'utf8_general_ci'; 
    $db['secondDatabase']['swap_pre'] = ''; 
    $db['secondDatabase']['autoinit'] = TRUE; 
    $db['secondDatabase']['stricton'] = FALSE; 

आप द्वारा

$DB2 = $this->load->database('secondDatabase', TRUE); 
3

/** config/database.php **/

$active_group = 'default'; 
$active_record = TRUE; 

$db['default']['hostname'] = ''; 
$db['default']['username'] = ''; 
$db['default']['password'] = ''; 
$db['default']['dbdriver'] = ''; 
$db['default']['dbprefix'] = ''; 
$db['default']['pconnect'] = TRUE; 
$db['default']['db_debug'] = (ENVIRONMENT !== 'production'); 
$db['default']['cache_on'] = FALSE; 
$db['default']['cachedir'] = ''; 
$db['default']['char_set'] = 'utf8'; 
$db['default']['dbcollat'] = 'utf8_general_ci'; 
$db['default']['swap_pre'] = ''; 
$db['default']['autoinit'] = TRUE; 
$db['default']['stricton'] = FALSE; 

/** आपके नियंत्रक या नियंत्रक में या मॉडल में दूसरा डेटाबेस लोड कर सकते हैं मॉडल **/

//by default the master database will be loaded and you can directly access db using  $this->db 
    $result = $this->db->query("SELECT * FROM `your_table`")->limit(1)->get()->result(); 



$config['dbxyz']['hostname'] = $result->hostname; 
$config['dbxyz']['username'] = $result->username; 
$config['dbxyz']['password'] = $result->password; 
$config['dbxyz']['dbdriver'] = ''; 
$config['dbxyz']['dbprefix'] = ''; 
$config['dbxyz']['pconnect'] = TRUE; 
$config['dbxyz']['db_debug'] = (ENVIRONMENT !== 'production'); 
$config['dbxyz']['cache_on'] = FALSE; 
$config['dbxyz']['cachedir'] = ''; 
$config['dbxyz']['char_set'] = 'utf8'; 
$config['dbxyz']['dbcollat'] = 'utf8_general_ci'; 
$config['dbxyz']['swap_pre'] = ''; 
$config['dbxyz']['autoinit'] = TRUE; 
$config['dbxyz']['stricton'] = FALSE; 

//load database config 
$this->config->load('database'); 

//Set database config dynamically   
$this->config->set_item('dbxyz', $config); 

//Now you can load the new database using 
$this->dbxyz = $this->load->database('dbxyz'); 

नोट: अधिक जानकारी के लिए रों, उल्लेख Config Class Codeigniter documentation

1

रेखा से नीचे जोड़े आवेदन में \ config \ database.php

$db['mydb2']['hostname'] = 'localhost'; 
$db['mydb2']['username'] = 'root'; 
$db['mydb2']['password'] = ''; 
$db['mydb2']['database'] = 'ci2'; 
$db['mydb2']['dbdriver'] = 'mysql'; 
$db['mydb2']['dbprefix'] = ''; 
$db['mydb2']['pconnect'] = TRUE; 
$db['mydb2']['db_debug'] = TRUE; 
$db['mydb2']['cache_on'] = FALSE; 
$db['mydb2']['cachedir'] = ''; 
$db['mydb2']['char_set'] = 'utf8'; 
$db['mydb2']['dbcollat'] = 'utf8_general_ci'; 
$db['mydb2']['swap_pre'] = ''; 
$db['mydb2']['autoinit'] = TRUE; 
$db['mydb2']['stricton'] = FALSE; 

अब हम नीचे की तरह हमारे नियंत्रक और मॉडल में हमारी दूसरी डेटाबेस का उपयोग करें।

$CI = &get_instance(); 
$this->db2 = $CI->load->database('mydb2', TRUE); 
$qry = $this->db2->query("SELECT * FROM employee"); 
print_r($qry->result()); 

मैंने http://www.tutsway.com/use-multiple-db-connections-in-codeigniter.php से संदर्भ लिया है। यह मेरे लिए काम है।

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