1

所以我有一个简单的语言模型,它的数据库结构看起来像这样:

id | language
_____________

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

假设我有一个对象所具有的语言的逗号分隔值列表(即 1、4、5)。我将如何使用 Yii 进行数据库查询并将 (1,4,5) 返回到带有 (english, German, thai) 的数组中?

4

1 回答 1

3

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'
)
于 2012-12-06T17:41:57.617 回答