laravel 基于当前语言显示数据库列

bf1o4zei  于 2023-03-24  发布在  其他
关注(0)|答案(1)|浏览(98)

在数据库中,我有:

name_en | name_fr

当用户选择法语-例如-我想得到name_fr字段,如果他选择了另一种语言,同样的事情

zfciruhq

zfciruhq1#

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

App::setLocale($lang);

如果您使用Eloquent,您可以向模型类中添加访问器:

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

如果使用setLocale设置lang,这将导致显示和更改name_{$lang}

相关问题