0

(更新)我使用 laravel-translatable 包并尝试插入带有翻译的行。尝试保存时,它给了我错误“调用字符串上的成员函数 save()”。

我用键和值循环一个对象,例如:"food": "Nourriture", 在循环内我选择 Translations 表:

$translationKey = \App\Translation::select('group', 'key')->where('group', 
'global')->where('key', $key)->first();

我不完全按照文档做,本来是:

$translationKey = \App\Translation::where('key', $key)->first();

不同之处在于我选择了“group”和“key”列,并且我做了一个额外的“where”来指定 group = global。那里有什么问题吗?

然后我尝试检查是否已经存在翻译。如果没有,我插入翻译:

 if($translationKey->hasTranslation('fr')) { 
     continue;
 }else{
     //insert
     $translationRow = $translationKey->translateOrNew('fr')->$key = $value;
     $translationRow->save();


 }

我使用 translateOrNew 而不是 translate ,否则我会收到错误:“从空值创建默认对象”。

似乎我无法执行该->save()方法,因为它是一个字符串,而不是它应该是的模型实例。所以我想这条线有问题吗?:

$translationKey = \App\Translation::select('group', 'key')->where('group', 
'global')->where('key', $key)->first();

但问题是什么?

4

1 回答 1

2

我有一些错误 - 我需要选择整行而不是单个列:

$translationKey = \App\Translation::where('group', 'global')
->where('key', 'about_us')
->first();

保存翻译时出现错误。我的 translations_translations 表有一个“值”列,所以这行得通:

$translationKey->translateOrNew($locale)->value = $value;
$translationKey->save()
于 2018-05-28T19:15:31.390 回答