получить данные из базы данных, используя массив в yii
-
26-12-2019 - |
Вопрос
Я новичок в yii.моя проблема в том, что у меня есть массив $hometeamid
который содержит все идентификаторы, которые мне нужны для отображения деталей.Как я могу получить данные.пожалуйста, помогите мне кто-нибудь
я пытался $mod = Yii::app()->db->createCommand('SELECT * FROM event WHERE id = 1432201 or id = 1432208')->queryAll();
$no=1432201;
$mod = Event::model()->findByAttributes(array('id' => $no));<br>
но не работает.Отображаются пустые поля.
Решение
Лучше всего использовать addInCriteria с помощью CDbCriteria или простого createCommand, но прежде чем делать это, проверьте свой запрос на рабочей среде phpmyadmin/navicate/mysql и т. д.вручную (он возвращает результат или нет?)
$homeTeamIds=['1','2','3','4'];
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$homeTeamIds,'OR'); //matching any of your homeTeadIds
$result = Event::model()->findAll($criteria);
ИЛИ
$ids = implode(', ', $homeTeamIds);
$sql = "SELECT * FROM event WHERE id IN ($ids)" // like where id IN(1,2,3,4)
$result = Yii::app()->db->createCommand($sql)->queryAll();
Другие советы
не используйте findByAttributes, если вы установили идентификатор в качестве первичного ключа в своей базе данных.
пример:
$mod = Event::model()->findbyPk($no);
Вы можете использовать CDbCriteria's добавитьInCondition() метод для поиска всех строк со значениями, соответствующими элементам массива, например, должно работать что-то вроде этого (не проверялось):
$hometeamid = array(
'1432201',
'1432208',
// ... etc... all the id's you want to show
);
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$hometeamid,'OR');
$mod = Event::model()->findAll($criteria);
В верхней части справочной страницы CDbCriteria есть даже пример использования addInCondition: http://www.yiiframework.com/doc/api/1.1/CDbCriteria
Сначала обработайте массив в строку, разделенную запятыми, которая используется как условное значение в запросе sql.
$idString = implode(', ', $hometeamid);
Затем поместите эту строку внутрь IN
предложение в запросе sql.
$sql = "SELECT *
FROM event
WHERE id IN ($idString)"
$mod = Yii::app()->db->createCommand($sql)->queryAll();
после выполнения queryAll
метод, вы получите связанные строки в виде результирующего массива