2013-05-27 65 views
0

我有這樣呼叫一個成員函數setCode()在非對象錯誤在Symfony2的

public function updateAction() 
    { 
     $em = $this->getDoctrine()->getManager(); 
     $codesArray=array('AFGHANISTAN;AF','ÅLAND ISLANDS;AX','ALBANIA;AL'); 
     foreach ($codesArray as $detail) 
     { 
      $detailArray=explode(";",$detail); 
      $country=$em->getRepository('TestBundle:Countries') 
          ->findOneBy(array('name'=>$detailArray[0])); 
      $country->setCode($detailArray[1]); 
     } 
     $em->flush(); 
    } 

一個cotroller動作它顯示錯誤

FatalErrorException: Error: Call to a member function setCode() on a non-object 

但是當我更換

$country=$em->getRepository('TestBundle:Countries') 
          ->findOneBy(array('name'=>$detailArray[0])); 

$country=$em->getRepository('TestBundle:Countries') 
           ->find('1'); 

表示它將更新第1條記錄。請給我這個解決方案。

回答

0

存儲庫(和實體)名稱通常是單數。

如果你的實體類是國家,你讓你的存儲庫:

$country=$em->getRepository('TestBundle:Country')-> ... 

我不知道你想做什麼,但你可以從Symfony2的Intl component讓這些國家代碼...

use Symfony\Component\Intl\Intl; 

\Locale::setDefault('en'); 

$countries = Intl::getRegionBundle()->getCountryNames(); 
// => array('AF' => 'Afghanistan', ...) 

$country = Intl::getRegionBundle()->getCountryName('GB'); 
// => 'United Kingdom' 
+0

實體類是國家唯一的......我已經驗證.. –

+0

我怎樣才能在Symfony2中實現這一@nifr '的foreach($ codesArray爲$細節) \t { \t \t $ detailArray = explode(「;」,$ detail); \t \t $ query =「update country set code =」。$ detailArray [1]。「where name =」。$ detailArray [0]; \t}' –

+0

答案更新... – nifr

相關問題