我有像
这样的cotroller动作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();
}
显示错误
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');
表示它将更新第一条记录。请给我解决方案。
答案 0 :(得分: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'