CI 2.1.3 を使用していますが、モデルの読み込みと CodeIgniter の「スーパー オブジェクト」の参照に問題があります。
例えば:
ログインコントローラーを使用してログインしようとしています:
class Login extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('Users_model');
}
public function validate_credentials() {
$this->load->library('form_validation');
// Some form validation here...
$query = $this->Users_model->validate();
if($query) { // if the user's credentials validated...
// something
} else {
// something
}
}
そして、Users_model に到達すると:
class Users_model extends CI_Model {
public function __construct()
{
parent::__construct();
}
public function validate()
{
$this->db->where('active', 1);
$this->db->where('email', $this->input->post('email'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('user');
if($query->num_rows == 1)
{
return $query;
}
}
}
validate() 関数の最初の行を参照して、「致命的なエラー: XX 行の users_model.php の非オブジェクトでメンバ関数 where() を呼び出します」というエラーが表示されます。
Users_model::validate() のようなログイン コントローラーで二重コロン (::) 演算子を使用して動作させることができますが、それは必要ないと思います。
次のように書いて動作させることもできます。
$ci = get_instance();
$ci->db->where...
Users_model->validate() 関数の開始時ですが、それも行う必要はないと思います。
データベース クラスは autoload.php にロードされています。
したがって、問題は、私のモデルの$thisが、想定されている「スーパー オブジェクト」ではなく、モデル クラス自体を参照していることです。手が残っていないので、非常に単純なことだと思いますが、それがわかりません。私を助けてください。