データベースから数人の学生を取得する必要があります。主キーはコンマ区切りの文字列になっています。
通常SQLを使用すると、次のようになります。
$cleanedStudentIdStringList = "1,2,3,4";
SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList)
YiiのActiveRecordは、結果のSQLステートメントのバインドされたパラメーターを一重引用符で囲んでいるようです。これにより、パラメーターのバインドを使用するとクエリが失敗します。
これは機能しますが、安全なパラメータバインディングを使用しません。
$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");
パラメータバインディングを引き続き使用して、1つのクエリで数行のみを取得する方法はありますか?
あなたはそれをそのようにすることもできます:
$criteria = new CDbCriteria();
$criteria->addInCondition("id", array(1,2,3,4));
$result = Student::model()->findAll($criteria);
必要な値を配列で使用します。
アレクシー
findAllByAttributes
メソッドも使用できます。
$a=array(1,2,3,4);
$model = Student::model()->findAllByAttributes(array("id"=>$a));