Перевод на Laravel — & quot; вызов функции-члена save () для строки & quot;

(Обновлено) Я использую переводимый пакет 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();

Но в чем проблема?

0

Решение

У меня были некоторые ошибки — мне нужно было выбрать всю строку вместо отдельных столбцов:

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

И были ошибки при сохранении перевода. Моя таблица translations_translations имеет столбец «value», так что это сработало:

$translationKey->translateOrNew($locale)->value = $value;
$translationKey->save()
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]