Как я заменяю cakephp алгоритм хеширования пароля?

SELECT id_service

Обе таблицы, участвующие в запросе, имеют столбец с именем id_service. Поскольку вы не указали префикс имени столбца, MySQL не может достоверно определить, какое из двух значений вы имеете в виду, поэтому возникает ошибка «неоднозначное имя столбца».

Поскольку вы используете LEFT JOIN, весьма вероятно, что вы захотите вернуть столбец из таблицы CHOSEN_SERVICES (так как другой столбец может быть NULL, когда условие соединения не соответствует). [1112 ]

Обратите внимание:

SELECT CHOSEN_SERVICES.id_service 
FROM CHOSEN_SERVICES 
LEFT JOIN SERVICES ON CHOSEN_SERVICES.id_chosen_service = SERVICES.id_service 
WHERE id_reservation = ?

Примечание: обратите внимание, что столбец id_reservation в предложении WHERE также не является префиксом. Хотя это не приведет к одной и той же ошибке (поскольку этот столбец существует только в одной из двух таблиц), рекомендуется всегда всегда добавлять префиксные столбцы, когда задействованы несколько таблиц. Другая хорошая привычка - использовать псевдонимы таблиц.

Соответственно, вот новая версия вашего запроса:

SELECT cs.id_service 
FROM chosen_services cs
LEFT JOIN services s ON cs.id_chosen_service = s.id_service 
WHERE cs.id_reservation = ?
6
задан Chuck Burgess 18 January 2013 в 05:50
поделиться

1 ответ

Я получил его работа...

вот мой AppController:

class AppController extends Controller {
    var $components = array('Auth');

    function beforeFilter() {
        // this is part of cake that serves up static pages, it should be authorized by default
        $this->Auth->allow('display');
        // tell cake to look on the user model itself for the password hashing function
        $this->Auth->authenticate = ClassRegistry::init('User');
        // tell cake where our credentials are on the User entity
        $this->Auth->fields = array(
           'username' => 'user',
           'password' => 'pass',
        );
        // this is where we want to go after a login... we'll want to make this dynamic at some point
        $this->Auth->loginRedirect = array('controller'=>'users', 'action'=>'index');
    }
}

Затем вот пользователь:

<?php
class User extends AppModel {
    var $name = 'User';

    // this is used by the auth component to turn the password into its hash before comparing with the DB
    function hashPasswords($data) {
         $data['User']['pass'] = crypt($data['User']['pass'], substr($data['User']['user'], 0, 2));
         return $data;
    }
}
?>

Все остальное нормально, я думаю.

Вот хороший ресурс: http://teknoid.wordpress.com/2008/10/08/demystifying-auth-features-in-cakephp-12/

8
ответ дан 9 December 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: