#activerecord #yii
#activerecord #yii
Вопрос:
Мне нужно получить пару студентов из базы данных, и у меня есть их первичные ключи в строке, разделенной запятыми.
Обычно при использовании SQL это было бы что-то вроде:
$cleanedStudentIdStringList = "1,2,3,4";
SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList)
ActiveRecord от Yii, похоже, вставляет одинарную кавычку вокруг связанных параметров в результирующем операторе 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);
и используйте в массиве любые значения, которые вам нужны.
Алексей
Ответ №2:
Вы также можете использовать findAllByAttributes
метод:
$a=array(1,2,3,4);
$model = Student::model()->findAllByAttributes(array("id"=>$a));