Мне нравится DataMapper, но бывают случаи, когда лучше просто написать SQL для решения вашей проблемы, а затем позволить DataMapper сделать часть работы за вас.Я обычно использую DataMapper для относительно простых запросов и прибегаю к старому доброму SQL, когда все усложняется.
В вашем случае команда SQL будет выглядеть так:
SELECT * FROM people
WHERE (want_age_min IS NULL OR age >= want_age_min)
AND (want_age max IS NULL OR age <= want_age_max)
AND (want_sex IS NULL OR want_sex = my_sex)
You 'Вы выбираете из всех людей, уже зарегистрированных в системе, и вы добавляете один критерий для каждого соответствующего атрибута.Результатом будут люди, которые либо не заботятся о минимальном возрасте (want_age_min равен нулю), либо минимальный возраст меньше или равен возрасту кандидата.И то же самое для всех атрибутов.
Таким образом, «сохраненный запрос» представляет собой просто строку со столбцами, указывающими условия.Тогда вы можете использовать этот запрос для всех случаев.