0

index() 関数に、ログインしているその個人に属する ExpenseClaims のみを表示させようとしています。

これは機能です:

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 構文にエラーがあります。1行目の「== 3」付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

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 

私はおそらく明らかな何かを見逃しているので許してください。しかし、私はケーキにかなり慣れていません。

4

3 に答える 3

2

まず、エラーは==、MySQL では有効ではない double equals を使用しているためです (単一の等号で十分です)。また、これらの結果をページ分割しようとしていることに気付きました。実際には、必要な条件をページ分割クエリに渡すことができます。

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

本のページネーションのセクションを必ずお読みください。

于 2012-08-02T13:36:32.160 に答える
2

==クエリで正しくありません n_n

あなたのクエリは

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());
}

お役に立てれば

于 2012-08-02T13:37:04.830 に答える
0
'ExpenseClaim.user_id =='

する必要があります

ExpenseClaim.user_id =

編集:私がタイプしている間に2つの答え.... :)

于 2012-08-02T13:37:25.843 に答える