来自ManyToMany连接表的__toString函数

时间:2014-05-07 07:44:40

标签: symfony doctrine-orm

我已经遇到了一个非常奇怪的减速带,并且想要更多的想法来弄清楚这个逻辑

我有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();
        }            
    } 
}

我非常感谢您花时间帮助我解决这个问题

2 个答案:

答案 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 '';
}