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()
Другие вопросы по тегам