2012-12-06 111 views
0

所以我有它的数据库结构看起来像这样一个简单的语言模型:如何做一个查询Yii中有多个主键值

id | language 
_____________ 

1 | english 
2 | japanese 
3 | russian 
4 | german 
5 | thai 

说我对语言的逗号分隔值列表,一个对象有(即1,4,5)。我将如何使用Yii进行数据库查询并将(1,4,5)返回到(英文,德文,泰文)数组中?

回答

2

addInCondition()应该适合你,是这样的:

$pkArray = array(1,4,5); 

$criteria = new CDbCriteria; 
$criteria->addInCondition('id',$pkArray); 

$models = Languages::model()->findAll($criteria); 

[编辑]

或者,如@jborch/@Paystey以下建议,对于一个主键查找可以使用findAllByPk()像这样:

$pkArray = array(1,4,5); 

$models = Language::model()->findAllByPk($pkArray); 

[/编辑]

应该返回活动记录模式的数组,所以你可以循环像这样:

foreach(array_keys($models) as $key) 
{ 
    echo '<p>Language: '.$models[$key]->name.'</p>'; 
} 

或者,如果您需要名称的数组,

CHtml::listData($models,'id','name'); 

会给你像一个数组所以:

array(
    1 => 'english', 
    4 => 'german', 
    5 => 'thai' 
) 
+1

或者只是'语言::模型() - > findByPk(阵列(1,4,5));' – jborch

+1

@jborch'findAllByPk' :) – Paystey

+0

啊,当然了。 – jborch