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++;
}
hehbhehb
(Hehbhehb)
2
please paste your some detailed code, specially $consultsales model