我有一个表,我需要拉出对应某个模式的所有ID(所有主键)。我需要在Yii中使用模型类完成此操作并将它们保存到数组中以供进一步处理。
答案 0 :(得分:1)
这是一种做出你想要的方式的方法。在此示例中,模型为“People”,模式为job_title LIKE "%developer%"
- 完成后处理以放入数组。如果您可以使用对象,请跳过后处理。
$criteria=new CDbCriteria;
$criteria->select = 'people_id';
$criteria->condition='job_title LIKE :txt';
$criteria->params=array(':txt'=>'%developer%');
$people=People::model()->findAll($criteria);
// save to array:
$people_a = array();
foreach ($people as $person) {
$people_a[] = $person['people_id'];
}
一种稍微有效的方法(如果你需要结果是一个数组),允许你使用CommandBuilder和你现有的模型:
$model = People::model();
$model->dbCriteria->condition .= 'job_title LIKE :txt';
$model->dbCriteria->select = 'people_id';
$model->dbCriteria->params = array(':txt'=>'%developer%');
$people = $model->getCommandBuilder()
->createFindCommand($model->tableSchema, $model->dbCriteria)
->queryAll();
$people_a = array();
array_walk($people, function ($value) use (& $people_a) {
$people_a[] = $value['people_id'];
});
(上面的匿名函数假设PHP 5.3)
答案 1 :(得分:0)
无法仅选择具有ActiveRecord模式的ID。您可以使用CCommandBuilder来构建SQL查询。