簡體   English   中英

CakePHP忽略條件

[英]CakePHP ignores condition

我對CakePHP有以下問題:

連接了兩個表(過濾器和帳戶)。 然后我建立條件,只有第二個條件Account.active =>1被執行。 如果我打印結果,仍然顯示具有除3以外的另一個mode_id過濾器。

$joins= array( 
    array('table' => 'filters',
          'alias' => 'Filter',
          'type' => 'right',
          'conditions' => array(
          'Filter.account_id = Account.id',
                )
            ),
        );

然后我執行包含連接和條件的請求

$activeAccounts = $this->Account->find('all',array(
 'conditions'=>array('AND'=>array('Filter.mode_id'=>3,'Account.active'=>1)),
 'joins'=>$joins));

檢查了模型,沒有發現問題。 過濾器屬於帳戶。 帳戶中有許多過濾器。

在生成的查詢下面。 結果仍然顯示Filter.mode_id為3以外的過濾器

這是生成的查詢。 盡管其中一個條件是'Filter.mode_id'=> 3,但結果仍然包含Filter.mode_id不同於3的行。

SELECT `Account`.`id`, `Account`.`user_id`, `Account`.`name`, 
`Account`.`api_key`, `Account`.`account_number`, `Account`.`remaining_balance`, 
`Account`.`investment_size`, `Account`.`active` 
FROM `baseline_db`.`accounts` AS `Account` 
right JOIN `baseline_db`.`filters` AS `Filter` 
  ON (`Filter`.`account_id` = `Account`.`id`) 
WHERE ((`Filter`.`mode_id` = 3) AND 
(`Account`.`active` = '1'))

就像說Oldskool一樣,使用Model關聯,並根據您的條件,“ AND”不是必需的,您不能輸入:

$activeAccounts = $this->Account->find('all',array(
    'conditions' => array(
        'Filter.mode_id'=>3,
        'Account.active'=>1
    )
));

在我看來,要與您的關系類型提出的要求很奇怪。 如果我理解,也許是這樣的:

$this->loadModel('Filter');
$filters =$this->Filter->find("list", array(
    'conditions' => array('Filter.mode_id' => 3),
    'fields' => array('Filter.account_id')
));
$activeAccounts = $this->Account->find('all',array(
    'conditions' => array(
        'Account.account_id'=>$filters,
        'Account.active'=>1
    )
));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM