yii 更改删除和重命名列名

yii changing removing and renameing column names

我目前有一个 return 可以发回拍卖中的物品清单。我想要做的是在将数组导出到 excel 传播 sheet 之前清理数组。我可以在导出前使用 yii 或 php 清理 select,我只需要知道如何去做。我知道如何使用 mysql 语句来做到这一点,但这在 yii 世界中是不受欢迎的。

这是我当前的代码:

$auction = Btmauctions::model()->findByPk($id);
$listings = $auction->btmListings;
$filename = 'last_lot_export.csv';
$csv = new ECSVExport($listings);
$csv->toCSV($filename); // returns string by default
Yii::app()->getRequest()->sendFile( $auction->name.'_lots.csv' , file_get_contents( $filename ) ); 

这会导出如下所示的 csv:

ID| auction_ID| lot| description | manufacturer | model|more_info|  condition
21  10  12  FANUC CIRCUIT BOARD Fanuc   A20B-9000-0180/09C      3
20  10  1   FANUC CIRCUIT BOARD Fanuc   A20B-0008-0242/023A     4
22  10  18  FANUC CIRCUT BOARD  Fanuc   A20B-1003-0010/12B  * A LITTLE DIRTY    3
23  10  19  FANUC CIRCUIT BOARD Fanuc   A20B-1003-0020/03A  *VERY DIRTY!!! *PLASTIC BROKEN ON RISERS!! COSMETIC ONLY!!  3

我需要做的是在导出之前自动清理 cvs,所以它看起来像这样:

lot|INFO              | manufacturer| model|  more info |         condition
12  FANUC CIRCUIT BOARD  Fanuc   A20B-9000-0180/09C                     3
1   FANUC CIRCUIT BOARD  Fanuc   A20B-0008-0242/023A                    4
18  FANUC CIRCUT BOARD   Fanuc   A20B-1003-0010/12B * A LITTLE DIRTY    3
19  FANUC CIRCUIT BOARD  Fanuc   A20B-1003-0020/03A *VERY DIRTY!!!

为了总结更改,我需要删除前 2 列,并将 'description' 列重命名为 'INFO'

应该是 Human Readable headers

中的类似内容
$headers = array('header_to_change'=>'new value');
$csv->setHeaders($headers);

// or

$csv->setHeader($currentHeaderValue, $newHeaderValue);

要仅导出您想要的列,我会 select 仅导出那些列。看起来 ECSVExport class 可以使用 CArrayDataprovider 作为输入。因此,只有 select 您要导出的列并用它填充 CArrayDataprovider 并用您的 class.

导出

但您也可以使用 "setCallback" 函数或 "setExclude" 函数删除不需要的列条目。 对于这两个函数,上面给出的 link 中都有一个示例。