在Yii中选择记录ID

时间:2011-10-09 14:18:36

标签: php yii

我有一个表,我需要拉出对应某个模式的所有ID(所有主键)。我需要在Yii中使用模型类完成此操作并将它们保存到数组中以供进一步处理。

2 个答案:

答案 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查询。