Неустранимая ошибка Codeigniter Active Records - PullRequest
1 голос
/ 06 марта 2012

новый для переполнения стека (и codeigniter!), И я сталкиваюсь с этой проблемой в моем первом проекте, естественно ... Я уверен, что это глупая ошибка с моей стороны, но я изучал и пытался понять это за последние несколько часов, и я, кажется, догадываюсь об этом ...

У меня есть библиотека базы данных, загруженная автоматически, но каждый раз, когда я пытаюсь использовать методы в моей модели, я получаю эту ошибку:

"Неустранимая ошибка: вызов функции-члена where () для необъекта в application \ models \ user_model.php в строке 13"

это мой метод контроллера пользователя, вызываемый действием формы из представления формы входа в систему:

function login() {
    $this->load->model('user_model'); 
    $query = $this->user_model->validate();  

    if ($query) 
    {
        $data = array(
                    'username'     => $this->input->post('username'),
                    'is_logged_in' => true
                 );

        $this->session->set_userdata($data);
        redirect('members');
    } 
    else
    {
        $this->load->view('user');
    }

} // end login function

это моя модель:

<?php

class User_model extends CI_Model {

function __construct() {
    parent::__construct();
}

// -------------------------------------------------------------------------------

// validate(): query db for user/pass and return true or false
function validate() {
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', sha1($this->input->post('password')));
    $query = $this->db->get('users');

    if ($query->num_rows() > 0) 
    {
        return true;
    }

} // end validate function

// -------------------------------------------------------------------------------

function check()
{
   $dbo = $this->load->database('default',TRUE);
   $query = $this->$dbo->get('users');
   echo $query->num_rows();
}

} // end user_model class

когда я пытался отладить проблему, я добавил методы db в контроллер, и они работали нормально ... при использовании их в моей модели они не хотят работать по какой-либо причине и выдают фатальную ошибку, о которой я упоминал. Ценю любую помощь, которую вы, ребята, можете бросить мне.

Заранее спасибо!

(с использованием codeigniter 2.1)

EDIT:

Просто чтобы прояснить ситуацию немного подробнее. Когда я добавляю метод validate (из моей модели) в свой контроллер, я не получаю ошибок, и все работает нормально ... Но когда оставляю его в модели и вызываю его с контроллера я получаю фатальную ошибку

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

Я думаю, что функция validate в вашей модели должна быть такой:

// validate(): query db for user/pass and return true or false

function validate($username,$password) {

    $this->db->where('username', $username);
    $this->db->where('password', sha1($password));
    $query = $this->db->get('users');

    if ($query->num_rows() > 0) 
    {
        return true;
    }

} // end validate function

В вашем контроллере вы можете назвать ее так:

function login()
{

$query =$this->user_model->validate($this->input->post('username'),$this->input->post('password')); 

  // the rest
}
0 голосов
/ 06 марта 2012

Вы пропустили $ query = part, должно быть:


$query = $this->db->get('users');

    if ($query->num_rows() > 0) 
    {
        return true;
    }


Отредактировано: Я думаю, что вы не добавили все родительские конструктора, попробуйте:


class Users extends CI_Model {

function __Users() {

    parent::__CI_Model();

    $this->load->database();

}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...