0

次のコードがあります。

public function check()
        {
            $result = $this->User->field('id', array('username' => 'alek@lol.pl'));
            debug($result);
        }

私のユーザーテーブルには、次のレコードがあります。

NSERT INTO `users` (`id`, `username`, `password`, `role`, `created`, `modified`) VALUES 
('5', 'alek@lol.pl', '64c918dd65b67b455248c2498bcc5421a66b68a6', 'member', '2012-04-24 10:56:37', '2012-04-24 10:56:37');

このコントローラーメソッドチェックの結果は次のとおりです。

false

SQLクエリは次のとおりです。

Nr  Query   Error   Affected    Num. rows   Took (ms)
1   SELECT `User`.`id` FROM `freebooks`.`users` AS `User` WHERE `username` = 'alek@lol.pl' LIMIT 1      1   1   0

したがって、SQL は 1 行を返しますが、ケーキの結果は「false」です。何が問題なのですか? 何か壊れた??

PhpMyAdmin でこの SQL ステートメントを実行すると、id = 5 が正しく返されます

そして、1行を次のように変更すると

$result = $this->User->find('all');

これは印刷します

true

不可能だよ!!!

4

1 に答える 1

1
$this->User->field('id', array('username', $this->request->data['User']['username']));

次のように確認できます。

if(!empty($this->User->field('id', array('username', $this->request->data['User']['username']));)) {

  // code
}

また

$id = $this->User->field('id', array('username', $this->request->data['User']['username']));

$this->User->id = $id;

if($this->User->exists()) {
  // code
}
于 2012-04-24T10:54:07.073 に答える