我已经遇到了一个非常奇怪的减速带,并且想要更多的想法来弄清楚这个逻辑
我有3个实体,国家/地区存储国家/地区详细信息,语言包含语言信息,最后是CountryLanguage,其中包含不同语言的国家/地区名称。
现在我的问题是,我想在特定语言的下拉列表中显示国家名称,仅使用__toString函数说英语。
请在我的国家/地区实体文件中查看以下代码,我发现此错误: Country :: __ toString()必须返回字符串值
public function __toString()
{
$names = $this->getLanguages();
foreach($names as $name)
{
if($name->getLanguage()->getId() == 1 /*id for english */)
{
return $name->getCountryName();
}
}
}
我非常感谢您花时间帮助我解决这个问题
答案 0 :(得分:0)
好的,让这个像这样工作,但我不确定它是最干净的答案,并且可以接受纠正。
public function __toString()
{
$names = $this->getLanguages();
$country = '';
foreach($names as $name)
{
if($name->getLanguage()->getId() == 1)
{
$country = $name->getCountryName();
}
}
return $country;
}
答案 1 :(得分:0)
只是为了向您展示更有效的方式:
$names = $this->getLanguages();
if($names && count($names) > 0)
{
foreach($names as $name)
{
if($name->getLanguage()->getId() == 1)
{
return $name->getCountryName();
}
}
}else
{
return '';
}