Laravel-переводимый - "вызов функции-члена save() для строки"
(Обновлено) Я использую переводимый пакет laravel и пытаюсь вставить строки с переводами. При попытке сохранения выдает ошибку "вызов функции-члена save() on string".
Я зацикливаю объект с ключами и значениями, например: "food": "Nourriture",
и внутри цикла я делаю выбор из таблицы переводов:
$translationKey = \App\Translation::select('group', 'key')->where('group',
'global')->where('key', $key)->first();
Я не делаю точно так, как документация, которая была бы:
$translationKey = \App\Translation::where('key', $key)->first();
Разница в том, что я выбираю столбцы "группа" и "ключ" и делаю дополнительное "где", чтобы указать, что группа = глобальная. Там что-то не так?
Затем я пытаюсь проверить, существует ли уже существующий перевод. Если нет, я вставляю перевод:
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();
Но в чем проблема?
1 ответ
У меня были некоторые ошибки - мне нужно было выбрать всю строку вместо отдельных столбцов:
$translationKey = \App\Translation::where('group', 'global')
->where('key', 'about_us')
->first();
И были ошибки при сохранении перевода. Моя таблица translations_translations имеет столбец "value", так что это сработало:
$translationKey->translateOrNew($locale)->value = $value;
$translationKey->save()