so schalten Sie die Datenbank in codeigniter
ich bin neu in CI und ich möchte nur wissen, gibt es eine Möglichkeit zu wechseln Datenbanken CI,ZB:
In der login-Seite gibt es eine dropdown-Liste können Sie angeben, welche Datenbank Sie wollen, verbinden mit, Blick so Aussehen
<select name="select" id="select" >
<option value="1">DB1</option>
<option value="2">DB2</option>
</select>
Und ich habe 2 Datenbanken in database.php man ist default
den anderen ist local
standardmäßig verwende ich die Standard-Einstellung.
$active_group = 'default';
$active_record = TRUE;
Meine Frage ist, wie kann ich festlegen, in db bezogen auf den dropdown-Wert, sagen, wenn ich wählen, DB1, Verbindung mit Standard-ein -, DB2-geht lokal....
Ich weiß, wie ich swtich db manuell :
$this->load->database('default', TRUE); OR
$this->load->database('local', TRUE);
Da hab ich verschiedene controller-und Modell-wie kann ich das erreichen... ich habe versucht wie:
zuerst den Wert des dropdownlist in einer login-Funktion:
$this->load->model('My_Model');
$db = $this->input->post('select')
$this->My_Model->getDB($db);
dann in meinem Modell, das ich bekam-Funktion :
function getDB($db)
{
if($db ==1)
{
$this->db = $this->load->database('default', TRUE);
}
elseif($db ==2)
{
$this->db = $this->load->database('local', TRUE);
}
}
Leider, es funktioniert nicht..... Jede Hilfe wäre sehr Geschätzt werden!!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich es geschafft habe. Zuerst bearbeitete ich meine database.php Konfiguration-Datei, um die neue Datenbank. Dann, in meinem Modell habe ich deklariert eine Klasse, variable
$current_db
, und ich schrieb die folgenden zwei Funktionen:Dann in mein controller, ich lief die folgenden:
War das Ergebnis ein array mit Daten aus beiden Datenbanken. Vielleicht der Schlüssel zu allem ist die Definition einer Klasse variable mit einem anderen Namen als $db.
EDIT:
Halten der aktuellen Datenbank geladen, die auf jeder Seite laden, müssen Sie verwenden, Sitzungen. In der controller-Funktion für die Verarbeitung der dropdown-Daten, könnten Sie etwas ähnlich dem folgenden:
Innerhalb jeder controller, der die Datenbank verwenden werden Sie wollen, hinzufügen von code zum laden der aktuellen Datenbank:
EDIT:
Wenn Sie gehen zu müssen, um Zugriff auf die gleiche Datenbank aus verschiedenen Modellen, schlage ich vor, eine Bibliothek von mddd bei EllisLab. Erstellen Sie einfach eine PHP-Datei mit dem Namen Db_manager.php mit dem folgenden code, und legen Sie es in Ihre Anwendung/libraries Verzeichnis:
In den Konstruktor der einzelnen Modell, die Nutzung der Datenbank hinzufügen die folgenden: