Мой поиск работает, как и ожидалось, но у меня есть дополнительный фактор, с которым я не могу разобраться.
Это разбивка того, что мне нужно достичь в одном запросе:
$ ApplicantAge МЕЖДУ Age.Min_Age AND Age.Max_age. НЕ 'PlanDetail.company_id' => '27'
$ PsSpouseAge МЕЖДУ Age.Min_Age AND Age.Max_age. ГДЕ 'PlanDetail.company_id' => '27'
Итак, как вы можете видеть из совпадений $ ApplicantAge, мне нужно получить все записи, которые не имеют company_id = 27, а затем где$ PsSpouseAge соответствует, получает только записи с company_id = 27.
Таким образом, все записи объединяются вместе ... Таким образом, по сути, два запроса к одним и тем же данным одновременно, а затем все записи объединяются в результат.
Как я уже сказал, мой поиск работает нормально, но мне нужно интегрировать это и разобраться с MySQL, с которым мне не повезло.
Я пробовал много AND / ORИ AND, и самое близкое, что я могу получить, это перезаписать первую часть запроса второй, что, конечно, не принесёт пользы.
То, что я сейчас пытаюсь:
'conditions' => array(
'AND' => array(
array($ApplicantAge . ' BETWEEN Age.Min_Age AND Age.Max_age'),
'AND' => array('Zips.title' => $Zip),
'AND' => array('Applicant.amount' => array($comboType, $memberCount)),
'NOT' => array('PlanDetail.company_id' => '27'),
array('OR' =>
array($PsSpouseAge . ' BETWEEN Age.Min_Age AND Age.Max_age'),
'AND' => array('Zips.title' => $Zip),
'AND' => array('Applicant.amount' => array($comboType, $memberCount)),
'AND' => array('PlanDetail.company_id' => '27'))
)),
И мой вывод SQL так:
WHERE ((19 BETWEEN `Age`.`Min_Age` AND `Age`.`Max_age`) AND (`Applicant`.`amount` IN ('as', '2')) AND (NOT (`PlanDetail`.`company_id` = 27)) AND (((21 BETWEEN `Age`.`Min_Age` AND `Age`.`Max_age`) AND (`PlanDetail`.`company_id` = 27))))