2016-07-09 15 views
0

我在Symfony 2.8中使用deboer/data-import bundle試圖從csv文件導入數據到數據庫。ddeboer/data-import錯誤:無法實例化接口Ddeboer DataImport Workflow

use Doctrine\ORM\EntityManager; 
use Ddeboer\DataImport\Workflow; 
use Ddeboer\DataImport\Reader\CsvReader; 
use Ddeboer\DataImport\Writer\DoctrineWriter; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class CsvFileWriter extends Controller { 
private $em; 
public function __construct(EntityManager $em) { 
    $this->em = $em; 
} 

public function csvImport($csvFile, $entity, $user ,$fileRecord) { 
$file = new \SplFileObject($csvFile); 
$csvReader = new CsvReader($file); 
$csvReader->setHeaderRowNumber(0); 
$csvReader->setStrict(false); 
$csvReader->setColumnHeaders($headers->csvReaderArray()); 
$workflow = new Workflow($csvReader); 
}} 

,但保持與forkflow線得到錯誤: 錯誤:無法實例化界面Ddeboer \ DataImport \工作流 輸出從csvReader: 陣列([routeNo] => 1 [tripNo] => 1 [callTripPosition ] => 1 [depotId] => 9002)

任何建議非常讚賞。

回答

3

工作流成爲接口,StepAggregator實現該接口。不更新 的文檔,但您只需要更換如下:

use Ddeboer\DataImport\Workflow; 
//... 
$workflow = new Workflow($csvReader); 

有:

use Ddeboer\DataImport\Workflow\StepAggregator; 
//... 
$workflow = new StepAggregator($csvReader); 
+2

我想說 - 對於較少的代碼重構 - 可以爲新的'use'聲明設置一個別名:'使用Ddeboer \ DataImport \ Workflow \ StepAggregator作爲工作流程。 這樣你就不必改變所有的實例 – LittleBigDev

0

經過一些研究和代碼debbuging似乎Ddeboer進口沒有更新手冊。工作流程方法僅成爲接口時發生錯誤。

0

這個項目,因此文件建立是過時並不發達了:他們是在一個替代https://github.com/portphp/portphp工作正如他們所說,這是一個針對PHP的數據導入/導出工作流程http://portphp.org

另外一個symfony包也在計劃中,但是到現在爲止他們並沒有從這個包開始: https://github.com/portphp/symfony-bundle

所以你唯一的幫助就是搜索你需要的代碼的github回購,並檢查tests files的例子。