Cakephp查找所有数据库错误

Cakephp查找所有数据库错误,cakephp,Cakephp,我试图使我的index()函数只显示属于该登录用户的ExpenseSclaims 这就是功能: public function index() { $this->ExpenseClaim->recursive = 0; $currentUsersClaims = $this->ExpenseClaim->find('all', array('conditions' => array('ExpenseClaim.user_id ==' => $t

我试图使我的index()函数只显示属于该登录用户的ExpenseSclaims

这就是功能:

public function index() {
    $this->ExpenseClaim->recursive = 0;
    $currentUsersClaims = $this->ExpenseClaim->find('all', array('conditions' => array('ExpenseClaim.user_id ==' => $this->Auth->user('id'))));
    $this->set('currentUsersClaims', $this->paginate());
}
这就是我得到的错误:

数据库错误

错误:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“==3”附近要使用的正确语法

SQL Query: SELECT `ExpenseClaim`.`id`, `ExpenseClaim`.`user_id`, `ExpenseClaim`.`claim_status_id`, `ExpenseClaim`.`created`, `ExpenseClaim`.`modified`, `ExpenseClaim`.`approved`, `ExpenseClaim`.`approved_by`, `ExpenseClaim`.`date_submitted`, `User`.`id`, `User`.`username`, `User`.`password`, `User`.`group_id`, `User`.`name`, `User`.`address`, `User`.`department_id`, `User`.`mileage_rate`, `User`.`created`, `User`.`modified`, `ClaimStatus`.`id`, `ClaimStatus`.`name`, `ClaimStatus`.`created`, `ClaimStatus`.`modified` FROM `expenses`.`expense_claims` AS `ExpenseClaim` LEFT JOIN `expenses`.`users` AS `User` ON (`ExpenseClaim`.`user_id` = `User`.`id`) LEFT JOIN `expenses`.`claim_statuses` AS `ClaimStatus` ON (`ExpenseClaim`.`claim_status_id` = `ClaimStatus`.`id`) WHERE `ExpenseClaim`.`user_id` == 3 

请原谅,我可能遗漏了一些明显的东西,但我对cake还很陌生。

首先,错误是因为您使用了双等号
==
,这在MySQL中无效(单等号就可以了)。我还注意到您正在尝试对这些结果进行分页,实际上您只需将所需的条件传递给分页查询:

$this->set(
    'currentUsersClaims',
    $this->paginate('ExpenseClaim', array(
        'ExpenseClaim.user_id' => $this->Auth->user('id')
    ))
);

请务必阅读本书中的部分。

首先,错误是因为您使用了双等号
=
,这在MySQL中无效(单等号即可)。我还注意到您正在尝试对这些结果进行分页,实际上您只需将所需的条件传递给分页查询:

$this->set(
    'currentUsersClaims',
    $this->paginate('ExpenseClaim', array(
        'ExpenseClaim.user_id' => $this->Auth->user('id')
    ))
);

请务必阅读本书中的章节。

==
在查询中不正确

您的查询应该是

public function index() {
    $this->ExpenseClaim->recursive = 0;
    $currentUsersClaims = $this->ExpenseClaim->find('all', 
              array('conditions' => array('ExpenseClaim.user_id' => $this->Auth->user('id'))));
    $this->set('currentUsersClaims', $this->paginate());
}

希望这有帮助

=
在查询中不正确

'ExpenseClaim.user_id =='
您的查询应该是

public function index() {
    $this->ExpenseClaim->recursive = 0;
    $currentUsersClaims = $this->ExpenseClaim->find('all', 
              array('conditions' => array('ExpenseClaim.user_id' => $this->Auth->user('id'))));
    $this->set('currentUsersClaims', $this->paginate());
}
希望这有帮助

'ExpenseClaim.user_id =='
应该是

ExpenseClaim.user_id =
编辑:我打字时有两个答案……)

应该是

ExpenseClaim.user_id =

编辑:我打字时有两个答案……)

啊,德拉特,当然,是在php模式!谢谢你。但是,函数没有返回所需的结果(尽管错误现在消失了)。我只想返回属于登录用户的费用报销单-你知道我哪里出错了吗?谢谢你的帮助啊,当然,drat是在php模式下!谢谢你。但是,函数没有返回所需的结果(尽管错误现在消失了)。我只想返回属于登录用户的费用报销单-你知道我哪里出错了吗?谢谢你的帮助谢谢-这工作做得很好。你能不能把ExpenseClaim.user_id=?对我来说有点。为什么=?不仅仅是=问号被转义/替换为数组的第二个变量,我现在实际上已经删除了它,因为对于basic
var=var
,它不是必需的,但是对于像starttime和endTime之间的
这样的事情,它是必需的。谢谢-这很有效。你能不能把ExpenseClaim.user_id=?对我来说有点。为什么=?不仅仅是=问号被转义/替换为数组的第二个变量,我现在实际上已经删除了它,因为对于basic
var=var
,它不是必需的,但是对于像starttime和endTime之间的
这样的事情,它是必需的。