所以我有一个简单的语言模型,它的数据库结构看起来像这样:
id | language
_____________
1 | english
2 | japanese
3 | russian
4 | german
5 | thai
假设我有一个对象所具有的语言的逗号分隔值列表(即 1、4、5)。我将如何使用 Yii 进行数据库查询并将 (1,4,5) 返回到带有 (english, German, thai) 的数组中?
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'
)