Dataprovider结果求助




class Consultsales extends CActiveRecord {

    ......	

      public function relations() {

		return array (

				'consult' => array (

						self::HAS_ONE,

						'Consult',

						'salesid' 

				), 

				'customer' => array (

						self::HAS_ONE,

						'Customer',

						'customerid'

				),

		);

	}


        public function search($consultsales, $consult) {

		$criteria = new CDbCriteria ();

		$criteria->with = array (

				'consult' => array (

						'select' => 'consult.*' 

				) 

		);

		$criteria->select = array('customerid','id');

$criteria->together = true;

		$criteria->order = 't.updatetime DESC,t.createtime DESC';

		$dataProvider = new CActiveDataProvider ( get_class ( $this ), array (

				'criteria' => $criteria 

		) );

		return $dataProvider;

	}

.......

}


	public function actionExport() {

		$consultsales = new Consultsales ( 'serach' );

		$consult = new Consult ();

		$consultsales->unsetAttributes ();

		$consultsalesData = $this->getParam ( 'Consultsales' );

		$consultData = $this->getParam ( 'Consult' );

		$consultsales->attributes = $consultsalesData;

		$consult->attributes = $consultData;

		

		$attrLabels = array_merge($consultsales->attributeLabels(), $consult->attributeLabels());

		

		// $attr [] = array_keys ( $consultsales->attributes );

		// $attr ['consult'] = array_keys ( $consult->attributes );

		$colnum = count ( $attrLabels );

		

		$dataProvider = $consultsales->search ( $consultsales, $consult );

		$data = $dataProvider->getData ();

		foreach($data as $value){

		   联合查询中,这里根据$value,怎么样才能分析到$value有几个表对象

                      可以不用$value->alias

                }




protected function setExcelCellTitle(&$objExSheet ,&$dataProvider) {

		$title =  array();

		// 多表查询字段对应的字段名称 ar->attributeLabels()

		// var_dump($dataProvider);

		// exit();

		foreach($dataProvider as $row=>$value){

			$relations = array_keys($value->relations());

			foreach ($relations as $relation) {

				if ($value->hasRelated($relation)){

					// 合并字段名称

					$title = array_merge($value->attributeLabels(),$value->$relation->attributeLabels());

				    break;

				}

			}

			break;

		}

		// 设置excel标题名称

		$n = 25;

		// 多少个标题字段

		$num = count ( $title );

		$j = ceil ( $num / $n );

		$cellValue = array();

		$row = 1;

	    foreach ($dataProvider as $rows){

		   // excel第二行开始显示数据		

		   // 显示列的标记名称(A1,B1,...AA1,AB1...)

		   reset($title);

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

			   for($d = 0; $d <= $n; $d ++) {

				  $columText = current($title);

				  $columName = key($title);				

				  // excel列名结束

				  if (!$columText) {

				     break;

				  }

				// Excel列名称

				if ($i == 0) {

					if ($row == 1) $cellTitle = chr ( 65 + $d ) . '1';

					$cellVname = chr ( 65 + $d ).($row+1);

				} else {

					if ($row == 1) $cellTitle = chr ( 65 + $i - 1 ) . chr ( 65 + $d ). '1';

					$cellVname = chr ( 65 + $i - 1 ). chr ( 65 + $d ). ($row+1);

				}

				// excel 第一行,标题行 设置excel列的标题

				if ($row == 1) {

					// 设置excel列标题

					$objExSheet->setCellValue ($cellTitle , 这里多表查询,怎么取到多表的attributesLables) ;

				    $cellValue[$columName] = $cellTitle;

				   

				}

				next($title);

				// 设置excel数据,excel显示查询结果数据

				$objExSheet->setCellValue ($cellVname , 这里多表查询,怎么取到多表的对应的字段数据, excel列对应所在字段数据);

			}

		}

		$row++;

	}



please paste your some detailed code, specially $consultsales model