CakePHP有以下问题:
两个表已连接(筛选器和帐户)。然后我正在构建条件,并且只有第二个条件Account.active =>1
被执行。如果我打印结果,仍然会显示具有另一个mode_id
而不是3的过滤器。
$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一样,使用模型关联对于您的情况,"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
)
));