(更新)我使用laravel-translatable包并尝试插入带翻译的行。当试图保存时,它给了我错误"调用字符串"上的成员函数save()。
我使用键和值循环一个对象,例如:"food": "Nourriture",
在循环内部,我选择了翻译表:
$translationKey = \App\Translation::select('group', 'key')->where('group',
'global')->where('key', $key)->first();
我不完全像文件那样做,原来应该是:
$translationKey = \App\Translation::where('key', $key)->first();
不同之处在于我选择了列' group'和'键',我做了额外的"其中"指定该组=全局。那里有什么不对吗?
然后我尝试检查是否存在已存在的翻译。如果没有,我插入翻译:
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();
但问题是什么?
答案 0 :(得分:1)
我遇到了一些错误 - 我需要选择整行而不是单个列:
$translationKey = \App\Translation::where('group', 'global')
->where('key', 'about_us')
->first();
保存翻译时出错。我的translations_translations表有一个“值”列,所以这个工作:
$translationKey->translateOrNew($locale)->value = $value;
$translationKey->save()