ddeboer / data-import错误:无法实例化接口Ddeboer \ DataImport \ Workflow

时间:2016-07-09 14:31:28

标签: php symfony

我在Symfony 2.8中使用deboer / data-import软件包尝试将数据从csv文件导入数据库。

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 \ Workflow csvReader的输出: 数组([routeNo] => 1 [tripNo] => 1 [callTripPosition] => 1 [depotId] => 9002)

任何建议都非常赞赏。

3 个答案:

答案 0 :(得分:4)

工作流成为一个接口,StepAggregator实现了该接口。 文档未更新,但您只需要替换以下内容:

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

使用:

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

答案 1 :(得分:0)

After some research and code debbuging it seems that Ddeboer-import has not updated manual. Error occurs as workflow method became interface only.

答案 2 :(得分:0)

此项目不再开发,因此文档已经过时:他们正在处理替换https://github.com/portphp/portphp,正如他们所说,它是PHP http://portphp.org的数据导入/导出工作流程

还计划了一个symfony捆绑包,但截至今天他们还没有开始: https://github.com/portphp/symfony-bundle

所以你唯一的帮助就是在github repo中搜索你需要的代码,并查看tests files的例子。