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 并对其进行降序排序并获取匹配的最新 10 行!

Yii:如何计算模型中的记录?

于 2013-10-07T08:09:01.610 回答