2012-12-06 79 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