2011-10-09 84 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查詢。