【问题标题】:Exporting to csv file with Doctrine and Symfony使用 Doctrine 和 Symfony 导出到 csv 文件
【发布时间】:2013-02-07 04:34:50
【问题描述】:

我正在使用 Doctrine 和 symfony 从数据库表中导出。我已经用

调用了我的数据库
$variableTable = Doctrine::getTable('Table Name')->findAll();

然后我设置另一个变量来从中获取数据,如下所示:

$variable = $variableTable->getData();

我只是希望能够遍历它,这样我就可以将需要放入 csv 文件的数据提取出来,但我被困在了那部分。出于某种原因,当我调试时,它显示设置为 getData 值的第二个变量是 null/0。

我不确定我是否遗漏了什么。

【问题讨论】:

    标签: php doctrine symfony-1.4


    【解决方案1】:

    我想也许您正试图在集合上调用 getData 而不是在记录上调用 getData...但这没有多大意义,因为您仍然必须在每条记录上调用 getData ,所以你也可以只遍历集合。此外,由于某些疯狂的原因,您的findAll 可能没有结果,所以我认为您应该考虑到这一点。无论如何,类似于以下的代码过去对我有用,所以如果没有你的代码细节,我能提供的最好的:

    $records = Doctrine::getTable('RecordName')->findAll();
    
    if($records->count()) {
       $csvPath = '/path/to/csv/file.csv';
    
       $csvh = fopen($csvPath, 'w');
       $d = ','; // this is the default but i like to be explicit
       $e = '"'; // this is the default but i like to be explicit
    
       foreach($records as $record) {
           $data = $record->toArray(false); // false for the shallow conversion
           fputcsv($csvh, $data, $d, $e);
       }
    
       fclose($csvh);
    
      // do something with the file
    }
    

    【讨论】:

    • 不错的解决方案,请将 fuputcsv 修改为 fputcsv。
    • 它在大型数据集上的表现如何?不是要填满内存吗?
    • 对于大型数据集,我倾向于对它们进行批处理。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 2014-02-03
      • 1970-01-01
      相关资源
      最近更新 更多