cakephp 3.4 friendsofcake / csvview关联表问题

时间:2017-07-11 15:37:52

标签: csv cakephp export associations cakephp-3.4

我目前正在尝试使用FriendsOfCake / csvView生成csv文件。问题是,我试图从中获取文件的表有很多关联表(大约11个)。所以文件导出看起来像这样:

CODE |   NAME   | MANUFACTURER_ID | BRAND_ID | OWNER_ID | ADDRESS   | ==
234A | John Doe |        4        |     1    |     3    | fake st 1 |

我试图操纵数组,以便只显示外观表的名称而不是ID,但我只是不断发生致命错误。

插件文档没有显示如何使用关联表,所以我不知道是否可能无法完成。

这是我的控制器导出功能,没什么特别的:

public function export() {
    $now = Time::now();

    $this->response->download('reporte_codigos_vin_' . $now . '.csv');
    $data = $this->VinCodes->find('all')->toArray();
    $_serialize = 'data';
    $_header = ['ID', 'Código VIN', 'Fabricante', 'Marca', 'Modelo', 'Tipo de Equipo', 'Año de Fabricación', 'País de Fabricación', 'Kilometraje', 'Nº Serie Motor Orignal', 'Marca Motor', 'Modelo Motor', 'Nº Serie Remotorización', 'Marca Motor R', 'Modelo Motor R', 'Cliente', 'País Cliente', 'Propietario del vehiculo', 'Placa del vehiculo', 'País de Ubicación del Propietario', 'Provincia de Ubicación del Propietario', 'Dirección de Ubicación del Propietario', 'Fecha de Creación', 'Fecha de Modificación'];
    $this->set(compact('data', '_serialize', '_header'));
    $this->viewBuilder()->className('CsvView.Csv');
    return;
}

这是视图中的链接:

<?= $this->Html->link('Export', [
    'controller' => 'vinCodes', 
    'action' => 'export',
    '_ext' => 'csv'], ['style' => ['color: white;'], 'escape' => false, 'class' => 'btn btn-w-m btn-success btn-sm']) ?>

我非常感谢有关如何解决此问题的任何指导。

1 个答案:

答案 0 :(得分:0)

该插件使用平面阵列结构。要显示相关数据,您可以决定nest将相关数据$_header = ['Username', 'Titles']; $_extract = [ 'username', // 'posts.0.title' //get title of first post using Hash function ($row) { $results = Hash::extract($row['posts'], '{n}.title'); return implode('|', $results) ; } ]; //output //Username, Titles //eddie, hadoop|hortonworks|mapr 放入单个字段,例如用户有很多帖子

self.navigationController?.navigationBar.largeTitleTextAttributes = 
[NSAttributedStringKey.foregroundColor: UIColor.blue, 
 NSAttributedStringKey.font: UIFont(name: fontName, size: 30) ?? 
                             UIFont.systemFont(ofSize: 30)]