ZF2 表网关在从 csv 文件加载时重复值


ZF2 TableGateway repeating values when loading from csv file

首先,对不起英语不好。

我正在尝试从csv列表中加载多个用户,如下所示:

<?php
$handle = fopen ("teste.csv","r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $user = $this->getServiceLocator()->get('User');
    $user->exchangeArray(
        array( 'firsname'=>$data[0],
                'lastname'=>$data[1],
                'email'=>$data[2],
                'adress'=>$data[3],
                'phone'=>$data[4]
            )
        );
    $userTable = $this->getServiceLocator()->get('UserTable');
    $userTable->save($user);
}
fclose ($handle);
?>

但我不知道为什么它每次都重复相同的值,因为每行总是有相同的值......

看起来服务管理器总是在保存之前克隆相同的对象。

谁能帮忙?

尝试看看这是否有区别:

$user = (clone) $this->getServiceLocator()->get('User');

服务管理器只会在每次都为您提供一个新实例,如果您明确告诉它

http://framework.zend.com/manual/2.0/en/modules/zend.service-manager.quick-start.html

请注意有关共享服务的部分。这将告诉服务管理器您每次都需要一个新的用户对象,然后您就不需要像上面那样克隆该对象

'shared' => array(
        // Usually, you'll only indicate services that should _NOT_ be
        // shared -- i.e., ones where you want a different instance
        // every time.
        'User' => false,
    ),