当您使用模型的属性在 Yii 的 CActiveRecord 中进行查找时,您很可能会通过某种相等来查找。
Person::model()->findByAttributes(array(
'first_name' => $firstName,
'last_name' => $lastName,
));
在英语中,这翻译为“给我找一个姓氏为 $lastname 且名字为 $firstname 的人”。但这是一个不好的例子。请考虑以下内容。
Person::model()->findByAttributes(array(
'age' => 18,
));
这是一个更好的例子,用英语翻译成“把所有 18 岁的孩子都给我找来”(即“age = 18 的位置”)。可以用这样的条件重写它
Person::model()->findByAttributes(array(
'condition' => 'age = :age',
'params' => array(
':age' => 18,
),
));
到目前为止,似乎没有什么好处。但是这样的表达式使我们能够使用更多的布尔运算符。比如……
Person::model()->findByAttributes(array(
'condition' => 'age < :age',
'params' => array(
':age' => 18,
),
));
...现在可以帮助我们找到所有低于特定年龄的人。
使用$conditions 和$params,查询可以随心所欲地增长,但使用常规方法,您只能使用赋值查询。