blockquote>
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 = ?
Я получил его работа...
вот мой 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/