2013-12-01 2 views
0

Я использую CakePHP 2.3.8, и у меня возникают проблемы с получением Cake для правильного поиска значения. По-видимому, он не чувствителен к регистру. Я ищу «user.id» и результат запроса он показывает, как «user.id»Модель CakePHP и проблемы с запросом

users table 
id | username | password | email | created 

Я пытаюсь найти дату пользователь был создан в моей ReservationController

$this->loadmodel('User'); 
$date = $this->User->find('first',array(
            'conditions' => array(
             'User.id' => $id //note: 'id' => $id gives the same results 
            ) 
         )); 

я получаю следующее сообщение об ошибке

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user.id' in 'where clause' 
SQL Query: SELECT `User`.`created` FROM `TestDB`.`users` AS `User` WHERE `user`.`id` = 1 LIMIT 1 

Когда я скопировать запрос в PhpMyAdmin и изменения «user.id» до «» user.id тогда работает. Почему Cake делает нижний регистр, даже если я использую его в своем запросе? Если я изменю его на «Users.id», то торт будет искать с помощью uppsercause U и добавляет s, но это не то, что я хочу.

Я попытался добавить первичный ключ к моей модели пользователя с помощью public $primaryKey = 'id';, но ничего не сделал. В настоящее время у меня нет ссылок на первичный ключ в моей модели User, поэтому я не уверен, где/почему он решает искать «user.id», хотя я специально ссылаюсь на «User.id» в моем поиске. Фактически, единственная вещь в моей модели пользователя - это проверка формы.

+0

Обычно CakePHP не следует изменять ключ, за цитирование его должным образом, за исключением. Сначала попробуйте очистить кеш ('/ app/tmp/cache /'), это часто устраняет проблемы, связанные с моделью/db/schema. Пробовали ли вы его с чистой установкой CakePHP и манекеном, просто чтобы проверить, является ли это общей проблемой? То же самое происходит и с последней версией 2.4.3? – ndm

ответ

0

Вам не нужно добавить ModelName в запросе, если его за это же модель .. Retriving data

$this->loadModel('User'); 
$date = $this->User->find('first',array(
            'conditions' => array(
             'id' => $id 
            ) 
         )); 
+0

Это не работает и не имеет значения. Вот почему я поставил «User.id» в первую очередь. Ссылка на modelName не повредит запрос. Если бы мои модели были настроены так, что с hasMany-отношениями с другой таблицей, имеющей одно и то же имя столбца (хотя и не с идентификатором), это было бы необходимо, иначе это могло бы привести к тому, что столбец будет неоднозначным. Мне жаль, что вы, ребята, в StackOverflow, не были похожи на Reddit в смысле того, чтобы быть настолько быстрым, чтобы ничего не делать – user1443519

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