<?php
class Database extends CI_Controller {
public $branch_db;
function __construct($company_name, $branch_name) {
parent::__construct();
$branch_db = $this->load->database($company_name.'_db_'.$branch_name);
}
}
?>
Account_model.php
protected function verifyLogin($username, $password) {
$this->db->trans_start();
$sql = "SELECT password, company_id, branch_id
FROM account
WHERE username = {$username}"; //Prepare statement
$query = $this->db->query($sql);
$result_num = $query->num_rows();
if ($result_num == 1) {
$first_row = $query->row();
$stored_password = $first_row->password;
if (password_verify($password, $stored_password)) {
//Successful login
//Get company name
//Get branch name
//Set database
//Pass company_name, branch_name
//All models must be able to access the dynamically loaded database
}
}
$this->db->trans_complete();
}
Es gibt mehrere Datenbanken, auf die zugegriffen werden kann. Für jeden Zweig gibt es eine dynamisch erstellte Datenbank. Jede Filiale hat ein Konto. Wenn ein Konto angemeldet ist, wird auf die Datenbank zugegriffen, die mit diesem Konto verknüpft ist. Diese Datenbank wird dann für die gesamte Sitzung verwendet, bis sich der Benutzer abmeldet.
Ich habe eine Hauptdatenbank, wo eine Master-Liste der gültigen Benutzername/Passwort-Kombinationen gespeichert sind. Ich hatte das in meiner database.php
in der config
Ordner deklariert. Aber nachdem sich der Benutzer anmeldet, muss ich zu der Datenbank wechseln, die zu diesem Benutzerkonto gehört, damit sie auf ihre Daten zugreifen können.
Wie kann ich diesen Controller für meine Modelle verwenden, damit alle auf dieselbe Datenbank zugreifen können (ohne $this->load->database()
immer wieder neu erstellen zu müssen)?
bedeutet? Sie möchten die Datenbank für jede Funktion des Modells laden? –
Ja, ziemlich genau, denke ich? Ich möchte diese db gleichbedeutend mit $ this- db machen, global für alle Modelle zugänglich machen (jede Datenbank hat die gleiche Tabellenstruktur) @JayminsFakeAccount – herondale