получить данные из базы данных, используя массив в yii

StackOverflow https://stackoverflow.com//questions/24060460

  •  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 метод, вы получите связанные строки в виде результирующего массива

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top