0

このようなモデル/データベーステーブルがあります

id | group_id| first_name | middle_name | last_name
------------------------------------------------------ 
   |          |            |             |      
------------------------------------------------------

データベースからモデルを取得した後:

いう:

$people = PersonModel::model()->findAllByAttributes(array('group_id'=>$groupId));

そして、10行を取得したとします..指定されたgroupIdに一致します

一致した 10 行の first_name をすべて保存したいと考えています。

私はこれができることを知っています:

$personArray = array();
foreach($people as $person){
   $personArray[] = $person->first_name;
}

しかし、同じことを行うphp関数など、別の方法はありますか? ありがとうございました!

4

2 に答える 2

3
$criteria = new CDbCriteria;
$criteria->compare('group_id', $groupId);
$criteria->limit = 10;
$people = PersonModel::model()->findAll($criteria);
$personArray = $list = CHtml::listData($people, 'id','first_name');

CHtml::listData()は次のような連想配列を返します: ['id'] => 'first_name' (モデルの属性)

于 2013-10-07T10:03:28.237 に答える
0

次のように、最初に group_id に一致するモデルを数えることができます。

PersonModel::model()->countByAttributes(array('group_id'=>$groupId));

次に、それを 10 に制限し、desc で並べ替えて、一致した最新の 10 行を取得できます。

Yii : モデル内のレコードをカウントする方法は?

于 2013-10-07T08:09:01.610 に答える