Activerecord 如何使用';在(1,2,3)和#x27;和芬德尔?

Activerecord 如何使用';在(1,2,3)和#x27;和芬德尔?,activerecord,yii,Activerecord,Yii,我需要从数据库中找到几个学生,他们的主键用逗号分隔 通常情况下,使用SQL时会出现以下情况: $cleanedStudentIdStringList = "1,2,3,4"; SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList) Yii的ActiveRecord似乎在结果SQL语句中的绑定参数周围插入了一个引号,这会导致在使用参数绑定时查询失败 $students = Student::model()->findA

我需要从数据库中找到几个学生,他们的主键用逗号分隔

通常情况下,使用SQL时会出现以下情况:

$cleanedStudentIdStringList = "1,2,3,4";
SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList)
Yii的ActiveRecord似乎在结果SQL语句中的绑定参数周围插入了一个引号,这会导致在使用参数绑定时查询失败

$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");
这是可行的,但不使用安全参数绑定

$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");

有没有办法仍然使用参数绑定并在一个查询中只获取几行?

您也可以这样做:

$criteria = new CDbCriteria();
$criteria->addInCondition("id", array(1,2,3,4));
$result = Student::model()->findAll($criteria);
并在数组中使用所需的任何值


Aleksy

您还可以使用
findAllByAttributes
方法:

$a=array(1,2,3,4);
$model = Student::model()->findAllByAttributes(array("id"=>$a));