1

基本的に、私が持っているのは次のようなものです:

class Database extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }

    function connect($connection_infos)
    {
        $db = @new mysqli($connection_infos['host'], $connection_infos['username'],
                $connection_infos['password'], $connection_infos['database']);
        if (mysqli_connect_errno())
            return FALSE;
        else
            return TRUE;
    }
}

このモデルはコントローラの関数にロードされます:

class Management extends CI_Controller
{

    static $dbs = array(
                'ref' => array(
                    'connected' => FALSE,
                ),
                'dest' => array(
                    'connected' => FALSE,
                )
            );

    function connection()
    {
        $this->load->library('form_validation');
        $data = array();

        $this->form_validation->set_rules('host', 'Hostname', 'required');
        $this->form_validation->set_rules('username', 'Username', 'required');
        $this->form_validation->set_rules('database', 'Database', 'required');
        if (!$this->form_validation->run()) {
            $data['dbs'] = self::$dbs;
        } else {
            $this->load->model('database'); // Here I load the model
            $connection_infos = array(
                    'host' => $this->input->post('host'),
                    'username' => $this->input->post('username'),
                    'password' => $this->input->post('password'),
                    'database' => $this->input->post('database'),
                );
            if ($this->database->connect($connection_infos)) {
                self::$dbs['ref']['connected'] = TRUE;
                $data['dbs'] = self::$dbs;
            }
        }
        $this->load->view('dashboard', $data);
    }
}

だからここに私がしたことがあります:

ビューのフォーム検証で、connectionコントローラーから関数を呼び出します。この関数は、モデルをロードし、Databaseモデルの関数を呼び出しますconnect

私の質問は次のとおりです。自分のモデルで他の関数を作成して他の要求を作成したい場合、毎回接続を開く必要がありますか? はいの場合、接続資格情報を「保存」するにはどうすればよいですか?

ありがとう !

4

1 に答える 1

3

私が見たところによると、CI ドキュメンテーションにアクセスして、データベース ライブラリをよく読む必要があります。

チュートリアルで説明されている基本的な構文/セマンティクスを超えて、「データベース」という名前のモデルは非論理的であり、適切な命名の選択ではありません。CodeIgniter の範囲内で、モデルを特定の 1 つのデータベース テーブルのみに関連付けるようにしてください。

実際のデータベース接続に関しては、CI_Model クラスでメンバー オブジェクトとして自動的に処理されます$dbmodelsとCIのデータベース接続に関するドキュメントを読むことをお勧めします。

したがって、すべてを正しく設定したら、正しくコード化されたモデルをロードすると、モデル内で自動データベース接続が提供され、いつでも再利用できます。

于 2012-08-06T17:01:21.743 に答える