Фрагмент ниже распечатывает запрос, который выбирает пользователей из БД, которые имеют DOB определенного возрастного диапазона.В этом случае пользователи, которым от 11 до 12 или от 17 до 18 лет.Я пытаюсь динамически создать этот запрос в синтаксисе CodeIgniter Active Record.
Этот фрагмент
$age_count = 0;
foreach( $range as $r )
{
$start_date = strtotime($r[0] . "years ago");
$stop_date = strtotime($r[1] . "years ago");
$range = array('dob <' => $start_date, 'dob >' => $stop_date);
( $age_count == "0" || $age_count%1 ) ? $this->db->where($range) : $this->db->or_where($range);
$age_count++;
}
$users = $this->db->get("users")->result_array();
создает этот запрос
SELECT * FROM (`users`) WHERE `dob` < 956351611 AND `dob` > 924729211 OR `dob` < 766962811 OR `dob` > 735426811
Последнее ИЛИ, конечно, должно быть AND.Как мне этого добиться?Все сводится к знанию, когда использовать or_where()
или просто where()
.Я думал, что каждый нечетный проход через foreach должен быть ИЛИ, но я еще не совсем там.
Эта функция может принимать только один диапазон (11-12) или несколько.