したがって、データベース構造が次のような単純な言語モデルがあります。
id | language
_____________
1 | english
2 | japanese
3 | russian
4 | german
5 | thai
オブジェクトが持つ言語のコンマ区切りの値のリストがあるとします (つまり、1,4,5)。Yii を使用してデータベース クエリを実行し、(1,4,5) を (英語、ドイツ語、タイ語) の配列に返すにはどうすればよいですか?
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'
)