2016-11-26 13 views
0

これは私のシナリオです。 ユーザーがシステムにログインします。ユーザー名に基づいて、私はcodeigniter構成でデータベースを設定する必要があります。 私は各モデルの$this->load->database()行がデフォルトのデータベースを読み込むことを知っています。 したがって、セッションでユーザー名を確認した後(ユーザーが正常にログインしたと仮定して)、データベースを動的にロードするにはどうすればよいですか?CodeIgniterで条件付きで別のデータベースを使用する方法

以下

私が探していますものです:

if(username == 'foo'){ 
    $this->load->database('database_name'); 
} 

次のように私が書いたモデル関数の例は次のとおりです。

public function check_valid_login($username, $password){ 
    $this->db->from('tbl_user_details'); 
    $this->db->where('email_address', $username); 
    $this->db->where('password', md5($password)); 
    $query = $this->db->get(); 
    $rowcount = $query->num_rows(); 
    return $rowcount ; 
} 

データベースを選択する上で、どのように、まだ私はでき$this->db->from('tbl_user_details');のようなステートメントを使用してください。すなわち、私は$this->dbそれ自身を使いたいと思う。それは可能ですか?

+0

次のリンクにアクセスしてください:http://stackoverflow.com/questions/8268853/codeigniter-multiple-database-connections –

答えて

0

解決策が見つかりました。 これは私が続けた戦略です:ユーザがログインしようとすると、ユーザによって提供されたユーザ名でセッション変数$_SESSION['dynamic_db_username']が設定されます。 次のロジックは、データベースを動的に選択するために使用されます。以下のコードは、親切にこの戦略を見直し、これが正しいなら、私に知らせてくださいconfig/database.php

/*Dynamic database selection - begins*/ 
if(!empty($_SESSION['dynamic_db_username'])){ 
    $dynamic_db_username = $_SESSION['dynamic_db_username']; 

    if($dynamic_db_username == '[email protected]') 
    { 
     $db['default']['database'] = 'database_1'; 
    } 
    elseif($dynamic_db_username == '[email protected]') 
    { 
     $db['default']['database'] = 'database_2'; 
    } 
    else 
    { 
     $db['default']['database'] = 'database_1'; 
    } 
} 
else 
{ 
    $db['default']['database'] = 'database_1'; 
} 

/*End*/ 

で書かれています。

0

は、configフォルダに autoload.phpという名前のファイルがあったファイル

を開くあなたは、アレイ内の「データベース」を配置する必要があります最初の

$autoload['libraries'] = array(''); 

以下のコードを見つけ、コードを変更します

$autoload['libraries'] = array('database'); 

のようになります。その後、いつでもどこでも手動で読み込むことができます。

+0

回答ありがとうございますが、要件は特定の条件に基づいてデータベースを選択できる必要があるということです動的に - ありがとう。 – Biju

関連する問題