我是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>
但不起作用。空白字段正在显示。
答案 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)
您可以使用CDbCriteria的addInCondition()方法查找值与数组中的项匹配的所有行,例如,此类内容应该有效(未经过测试):
$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();