如何迭代Yii CActiveDataProvider对象? [英] How to iterate over Yii CActiveDataProvider object?

查看:109
本文介绍了如何迭代Yii CActiveDataProvider对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何遍历数据提供者对象?我想访问返回的每一行的'name'字段并构建一个列表。你可以帮忙吗?

表格/模型的表格结构类别



$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $' name`varchar(64)NOT NULL,
PRIMARY KEY(`idCategory`)使用BTREE
)ENGINE = InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 55;

* 我的控制器类别中的功能 *

  $ names = array(); 
public function returnCategoryNames()
{
$ dataProvider = new CActiveDataProvider('Categories');
$ dataProvider-> setPagination(false);
$ count = $ dataProvider-> totalItemCount();

($ i = 0; $ i <$ count; $ i ++){

//这是我迷失的地方...
$ myname = $ dataProvider-> data [$ i] - > name;
array_push($ names,$ myname);

}

返回$ names;



解决方案

试试这个:

  public function returnCategoryNames()
{
$ dataProvider = new CActiveDataProvider('Categories');
$ dataProvider-> setPagination(false);
// $ count = $ dataProvider-> totalItemCount();
$ names = array();
foreach($ dataProvider-> getData()as $ record){
$ names [] = $ record-> name;
}
return array_unique($ names);
}

然而,您不需要使用数据提供者,而只需使用模型

  foreach(Categories :: model() - > findAll()as $ record){


How to iterate over a dataprovider object? I want to access the 'name' field of each row returned and build a list. Can you help?

Table structure for table/model categories

CREATE TABLE IF NOT EXISTS `categories` (
  `idCategory` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  PRIMARY KEY (`idCategory`) USING BTREE
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=55 ;

*Function in my Controller Categories*

    $names = array();
    public function returnCategoryNames()
{
    $dataProvider= new CActiveDataProvider('Categories');
    $dataProvider->setPagination(false);
    $count = $dataProvider->totalItemCount();

    for($i = 0; $i < $count; $i++){

             // this is where I am lost...
             $myname = $dataProvider->data[$i]->name;
             array_push($names, $myname);

    }   

       return $names;

}

解决方案

Try this:

public function returnCategoryNames()
{
  $dataProvider= new CActiveDataProvider('Categories');
  $dataProvider->setPagination(false);
  //$count = $dataProvider->totalItemCount();
  $names = array();
  foreach($dataProvider->getData() as $record) {
    $names[] = $record->name;
  }
  return array_unique($names);
}

However you dont need to use a data provider, instead just use the model

foreach(Categories::model()->findAll() as $record) {

这篇关于如何迭代Yii CActiveDataProvider对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆