Только 2-е из двух утверждений И читает для меня.Я полагаю, что столкнулся с проблемой вложения, но не уверен в этом:
...'conditions' => array(
"AND" => array(
array($ApplicantAge . ' BETWEEN Age.Min_Age AND Age.Max_age'),
'Zips.title' => $Zip,
'Applicant.amount' => array($comboType, $memberCount)
),
"AND" => array(
array($PsSpouseAge . ' BETWEEN Age.Min_Age AND Age.Max_age'),
'PlanDetail.company_id' => '27',
'Zips.title' => $Zip,
'Applicant.amount' => array($comboType, $memberCount)
)
),...
Как вы можете видеть, я пытаюсь получить ВСЕ записи $ ApplicantAge.'МЕЖДУ Age.Min_Age AND Age.Max_age И ТОЛЬКО конкретными записями ГДЕ' PlanDetail.company_id '=> '27 И $ PsSpouseAge.'МЕЖДУ Age.Min_Age AND Age.Max_age'), ...
Вот мой вывод SQL:
WHERE ((18 BETWEEN `Age`.`Min_Age` AND `Age`.`Max_age`) OR (`Zips`.`title` = '98605') OR (`Applicant`.`amount` IN ('as', '2'))) AND ((24 BETWEEN `Age`.`Min_Age` AND `Age`.`Max_age`) AND (`PlanDetail`.`company_id` = 27) AND (`Zips`.`title` = '97378') AND (`Applicant`.`amount` IN ('as', '2')))
В его нынешнем виде 'PlanDetail.company_id '=>' 27 ', переопределяет, и только результаты, которые удовлетворяют этому ' PlanDetail.company_id '=>' 27 ' критериям, показывают
Я был вэто на некоторое время, так что все начинает мешать в поле зрения .. Спасибо за замечание любых проблем с моей логикой SQL.
Вот мои полные соединения и условия сейчас:
$options = array(
'joins' => array(
array(
'table' => 'plans_zips',
'alias' => 'PZips',
'type' => 'inner',
'foreignKey' => false,
'conditions' => array('Plan.id = PZips.plan_id')
),
array(
'table' => 'zips',
'alias' => 'Zips',
'type' => 'inner',
'foreignKey' => false,
'conditions' => array('Zips.id = PZips.zip_id')
)
),
'conditions' => array(
'OR' => array(
'AND' => array(
array($ApplicantAge . ' BETWEEN Age.Min_Age AND Age.Max_age'),
'Zips.title' => $Zip,
'Applicant.amount' => array($comboType, $memberCount),
'NOT' => array(
'PlanDetail.company_id' => 27
)
),
array($PsSpouseAge . ' BETWEEN Age.Min_Age AND Age.Max_age')
)
),