2017-07-26 173 views
1

我正在編寫一個工匠命令,將數據庫中的表導出爲csv文件。 但是,當運行該命令時,CLI僅向我顯示來自數據庫的數據,並且不創建CSV文件。使用Laravel php artisan命令將數據庫表導出爲CSV

+0

有沒有錯誤?你確定運行命令的用戶有權執行此操作嗎? – skido

+0

@ skido不,沒有錯誤。是的,用戶有權限。 – Trayer

+0

您是否嘗試過製作一個只編寫一些隨機數據的工匠命令?換句話說,嘗試測試所有單個組件 –

回答

1

這工作得很好,我laravel 5.4項目

public function handle() 
{ 
    $filename = "logins.csv"; 

    $handle = fopen($filename, 'w'); 
    fputcsv($handle, array('customer_id', 'count', 'year', 'month', 'day', 'hour')); 

    fputcsv($handle, array("row['customer_id']", "row['count']", "row['year']", "row['month']", "row['day']", "row['hour']")); 

    fclose($handle); 

    $headers = array(
     'Content-Type' => 'text/csv', 
    ); 
} 

創建文件logins.csv在項目的根目錄

customer_id,count,year,month,day,hour 
row['customer_id'],row['count'],row['year'],row['month'],row['day'],row['hour'] 

順便說一句的是$頭陣的目的是什麼?

CLI顯示我只能從數據庫

也許你已經DD()某處的數據?

1

你可以試試這個庫:https://github.com/box/spout

讓您輕鬆創建CSV,XLSX,ODS文件是這樣的:

use Box\Spout\Writer\WriterFactory; 
use Box\Spout\Common\Type; 

$writer = WriterFactory::create(Type::XLSX); // for XLSX files 
//$writer = WriterFactory::create(Type::CSV); // for CSV files 
//$writer = WriterFactory::create(Type::ODS); // for ODS files 

$writer->openToFile($filePath); // write data to a file or to a PHP stream 
//$writer->openToBrowser($fileName); // stream data directly to the browser 

$writer->addRow($singleRow); // add a row at a time 
$writer->addRows($multipleRows); // add multiple rows at a time 

$writer->close(); 

你只通過行作爲陣列,就是這樣。

您可以在這裏找到的文檔:http://opensource.box.com/spout/

0

我發現我自己的解決方案。感謝你們!