CDbCriteria -模拟两个不等式条件- Yii


CDbCriteria - modelling two inequality conditions - Yii

我需要运行一个查询,返回与用户给出的年龄要求匹配的产品。数据库中的产品被分配最小和最大年龄,适用于(min_age &max_age)。用户将选择他们希望搜索的年龄范围(为了这个问题的方便,我们将其称为userMinAge &userMaxAge)。

因为我想返回用户选择的年龄范围和产品存储的年龄范围之间有一些交叉的任何产品,我认为这只需要满足以下不等式之一-

userMinAge <= min_age <= userMaxAge OR

userMinAge <= max_age <= userMaxAge

我试图使用Yii的CDbCriteria来运行这个,并提出了以下-

$criteria->condition = "$minAge <= min_age <= $maxAge OR $minAge <= max_age <= $maxAge";

可以正常运行(即不抛出错误),但不排除应该排除的产品。即当用户选择年龄为20-35岁时,包含年龄范围为8-19岁的产品。有些地方出了问题,但我对CDbCriteria的一般理解多少让我感到困惑。

有人能看出为什么这种方法不起作用吗?我使用CDbCriteria有什么错误吗?

许多谢谢,

你可以试试<>之前$criteria->condition = "($minAge <= min_age <= $maxAge) OR ($minAge <= max_age <= $maxAge)";
$criteria->condition = "(min_age BETWEEN $minAge AND $maxAge) OR(max_age BETWEEN $minAge AND $maxAge)";

如果这不能解决您的问题,请提及您的数据库架构。那么就很容易说出哪里出了问题…