2011-10-09 13 views
-1

私はテーブルを持っており、すべてのID(すべての主キー)を特定のパターンに対応させる必要があります。私はこれをYiiのモデルクラスで行う必要があり、さらに処理するために配列に保存する必要があります。YiiのレコードIDを選択

答えて

1

ここにあなたが求めているようなことをする方法があります。この例では、モデルは「人」で、パターンは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']; 
} 

Aそれを行うには、わずかに、より効率的な方法(あなたが配列する結果が必要な場合)を使用すると、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クエリを構築できます。

関連する問題