2015-04-14 2 views
0

Получение:дБ не распознаются

Fatal error: Call to undefined method UsersController::select() application/models/User.php on line 27

Похоже, что UsersController не посылая функцию выбора db.class.php, которую я имею в папке библиотеки.

Загружается db.class.php, но не в этом случае.

код внутри класса UserController.php является:

class User extends Model 
{   

/** 
* Login method 
* 
* @todo: update last_login_time 
* @todo: add hashing 
*/ 
public function user_login() { 

    $username = $_POST['data']['User']['username']; 
    $password = $_POST['data']['User']['password']; 


    $bind = array(
     ":username" => $username, 
    ); 
    $result = $this->select("users", "username = :username", $bind); 

    //Check the password returned from the db against the password entered 
    if (Bcrypt::checkPassword($password, $result[0]['password']) == true) { 
     Session::init(); 

     Session::set('user_logged_in', true); 
     Session::set('user_id', $result[0]['id']); 
     Session::set('user_name', $result[0]['username']); 
     Session::set('user_permission', $result[0]['permission']); 
     Session::set('user_role', $result[0]['role']); 

     return true; 
    } else { 
     return false; 
    } 
} 


/** 
* Log out process, deletes cookie, deletes session 
* 
* @todo implement rememberme cookie 
*/ 
public function logout() 
{ 
    // set the remember-me-cookie to ten years ago (3600sec * 365 days * 10). 
    // that's obviously the best practice to kill a cookie via php 
    // @see http://stackoverflow.com/a/686166/1114320 
    //setcookie('rememberme', false, time() - (3600 * 3650), '/', COOKIE_DOMAIN); 

    Session::init(); 
    // delete the session 
    Session::destroy(); 
} 

} 

Выберите функцию внутри db.class.php

public function select($table, $where="", $bind="", $fields="*") { 
    $sql = "SELECT " . $fields . " FROM " . $table; 
    if(!empty($where)) 
     $sql .= " WHERE " . $where; 
    $sql .= ";"; 
    return $this->run($sql, $bind); 
} 

Я думаю, что это может быть ссылка на $ this-> выберите(), но Я изучаю.

+0

Если вы публикуете информацию об определенной ошибке, вы должны ** включить полное сообщение об ошибке (с номером строки) и, по крайней мере, код в этой строке и строку перед ней. –

+0

Извинения :: addded – jamper

+0

Эта ошибка говорит мне, что класс UserController не имеет метода под названием select(). Это Ларавель? –

ответ

0

Причина этой ошибки select(), от того, что я могу сказать, это не метод User, Model, или какой-либо другой родитель в иерархии Model.

Вместо этого он находится в db.class.php.

Учитывая текущий код, я предлагаю нагнетание DB объекта в User/Model, а затем передать на этот объект непосредственно.

Например:

class Model { 
    public function __construct(DB $db) { 
     $this->db = $db; 
    } 
} 

Затем, чтобы устранить ошибку, в User сделать:

$result = $this->db->select("users", "username = :username", $bind); 

Примечание: Это является неполным. Поэтому вам нужно заполнить несколько пробелов. Так как вы учитесь, я предлагаю читать:

Кроме того, .class.php является старым именование используется в PHP 4. Не сделай это. Вместо этого выполните соглашение об именах PSR-4.

+0

Хорошо - попробуем, мне может понадобиться снова попасть в книги. Ha ha – jamper

+0

Пила ваш обновленный комментарий, если это предполагается CakePHP, этот код не соответствует их соглашению. –

+0

Спасибо - я изо всех сил пытаюсь понять это, но все же учиться. – jamper

Смежные вопросы