2013-10-22 36 views
0

首先,对不起英语不好。ZF2 TableGateway从csv文件加载时重复值

我想从这样的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); 
?> 

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

貌似服务管理始终保存之前克隆相同的对象..

谁能帮助?看到

回答

0

尝试,如果这有差别:

$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, 
    ), 
+0

Bulllseye!非常感谢你! –