2011-10-09 50 views
-1

我有一张桌子,我需要拉出所有对应特定图案的ID(所有主键)。我需要使用Yii中的模型类来完成这些工作,并将它们保存到数组中以供进一步处理。在Yii中选择记录ID

回答

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)

0

没有办法只选择具有ActiveRecord模式的ID。你可以使用CCommandBuilder来建立sql查询。