cakephp 3.4 friendsofcake / csvview关联表问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cakephp 3.4 friendsofcake / csvview关联表问题相关的知识,希望对你有一定的参考价值。

我目前正在尝试使用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']) ?>

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

答案

该插件使用平面阵列结构。要显示相关数据,您可以决定将相关数据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

以上是关于cakephp 3.4 friendsofcake / csvview关联表问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CakePHP 3.4 输出自定义 HTTP 正文内容?回显导致“无法发出标头”错误

CakePHP3.4:如何发送 json 对象响应?

markdown [cakephp:CakePHP3注意事项] CakePHP3基本知识说明。 #cakephp

php [cakephp:Paginator示例] CakePHP上PaginatorComponent的示例代码。 #cakephp

php [cakephp:mysqldump] mysqldumpのcakephp実装サンプル。#php #cakephp #mysql

ORM如何在CakePHP3中运行