У меня проблема с CakePHP: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'))
Ассоциации не будут иметь никакого отношения, если вы выполняете ручное соединение. Укажите запрос, который он генерирует. – Dave
Любая причина, по которой вы не используете [Ассоциации моделей] (http://book.cakephp.org/3.0/en/orm/associations.html)? Это сделает вашу жизнь намного проще. – Oldskool
Это не решит вашу проблему, но вы не должны использовать ** right ** join. Необходимо использовать ** внутреннее ** соединение. Попробуйте установить свой рекурсивный флаг на -1 для этой находки. _ (Обратите внимание, что сгенерированный запрос не возвращает столбцы таблицы фильтров. Вы действительно должны использовать [сдерживаемое поведение] (http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html)) _. – AgRizzo