根据当前语言显示数据库列

时间:2014-09-25 11:02:18

标签: laravel laravel-4 eloquent multiple-languages

在数据库中我有这个:

name_en | name_fr 

当用户选择法语时 - 例如 - 我想获得name_fr字段,如果他选择其他语言则相同的话

1 个答案:

答案 0 :(得分:5)

假设您使用以下方法在应用程序中设置区域设置:

App::setLocale($lang);

如果你使用Eloquent,你可以添加到你的模型类accesssor:

public function getNameAttribute($value) {
    return $this->{'name_'.App::getLocale()};
}

还有mutator:

public function setNameAttribute($value) {
    $this->{'name_'.App::getLocale()} = $value;
}

假设您已将这些功能添加到Content模型,您现在可以使用:

$content = Content::first(); // find first article
echo $content->name;  // displaying its name

$content->name = 'updated content'; // changing its name
$content->save(); // saving

如果您使用name_{$lang}

设置lang,这将导致显示和更改setLocale