findByAttributes示例

时间:2013-06-03 10:59:01

标签: yii yii-cactiverecord

在Yii $condition中使用$paramfindByAttributes的说明

在大多数情况下,这就是我使用findByAttributes

的方式
Person::model()->findByAttributes(array('first_name'=>$firstName,'last_name'=>$lastName));

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

当您使用模型的属性在Yii的CActiveRecord中进行查找时,您很可能会通过某种平等找到。

Person::model()->findByAttributes(array(
  'first_name' => $firstName,
  'last_name' => $lastName,
));

在英语中,这转换为"找到一个姓氏为$ lastname且名字为$ firstname"的人。但这是一个糟糕的例子。请考虑以下事项。

Person::model()->findByAttributes(array(
  'age' => 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,查询可以变得复杂,但是使用常规方法,您只能使用赋值查询。