使用yii中的数组从db获取数据

时间:2014-06-05 12:38:36

标签: yii yii-components yii-events

我是yii的新手。我的问题是,我有一个数组$hometeamid,其中包含我需要显示详细信息的所有ID。我怎样才能获得数据。有人帮助我 我试过了$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>

但不起作用。空白字段正在显示。

4 个答案:

答案 0 :(得分:0)

首先将数组处理为逗号分隔的字符串,该字符串在sql查询

中用作条件值
$idString = implode(', ', $hometeamid);

然后将该字符串放在sql查询中的IN子句中。

$sql = "SELECT *
           FROM event
         WHERE id IN ($idString)"

$mod = Yii::app()->db->createCommand($sql)->queryAll();

执行queryAll方法后,您将收到相关的行作为结果数组

答案 1 :(得分:0)

如果在数据库中将id设置为主键,则不要使用findByAttributes。

示例:

$mod = Event::model()->findbyPk($no);

答案 2 :(得分:0)

您可以使用CDbCriteriaaddInCondition()方法查找值与数组中的项匹配的所有行,例如,此类内容应该有效(未经过测试):

$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

答案 3 :(得分:0)

最好用CDbCriteria或简单的createCommand做addInCriteria,但在此之前,请手动检查phpmyadmin / navicate / mysql workbench等上的查询(是否返回结果?)

$homeTeamIds=['1','2','3','4'];
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$homeTeamIds,'OR'); //matching any of your homeTeadIds 
$result = Event::model()->findAll($criteria);

OR

$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();