Php 选择Yii中的记录ID

Php 选择Yii中的记录ID,php,yii,Php,Yii,我有一个表,我需要提取与特定模式对应的所有ID(所有主键)。我需要用Yii中的model类完成此操作,并将它们保存到数组中以供进一步处理。无法仅选择具有ActiveRecord模式的ID。您可以使用CCommandBuilder构建sql查询 这里有一种方法可以满足你的要求。在本例中,模型是“People”,模式是像“%developer%”一样的job\u title——完成后处理以放入数组中。如果可以使用对象,请跳过后期处理 $criteria=new CDbCriteria; $crite

我有一个表,我需要提取与特定模式对应的所有ID(所有主键)。我需要用Yii中的model类完成此操作,并将它们保存到数组中以供进一步处理。

无法仅选择具有ActiveRecord模式的ID。您可以使用CCommandBuilder构建sql查询

这里有一种方法可以满足你的要求。在本例中,模型是“People”,模式是像“%developer%”一样的
job\u title
——完成后处理以放入数组中。如果可以使用对象,请跳过后期处理

$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'];
});
(上面的匿名函数假设为PHP5.3)