Я ищу решение проблемы перевода.Проблема возникает, когда мне нужно вернуть перевод, и он не найден для данной локали.Вместо этого мне нужно вернуть значение по умолчанию.
Вот мой код, который возвращает 8 главных категорий:
$category = Category::with('childCategories.translation', 'childCategories.image')
->with(['childCategories' => function ($query)
{
$query->take(8);
}])
->where('id', 1018)->first();
И модель с отношением:
public function childCategories()
{
return $this->hasManyThrough('App\Models\Category',
'App\Models\CategoryToCategory',
'id_parent_category',
'id',
'id',
'id_category');
}
public function translation($locale = null)
{
if ($locale == null) {
$locale = \App::getLocale();
}
return $this->hasOne('App\Models\CategoryLanguage', 'id_category', 'id')->where('locale', '=', $locale);
}
Я былдумая о двух решениях:
- Получить все переводы и отфильтровать для одного соответствующего $ locale / или значения по умолчанию, если не найдено (для всех языков будут приняты строки)
- Проверить, существует ли отношение -Я думаю, что это приведет ко второму запросу, если
$locale
не найден (для загрузки по умолчанию)
Есть ли более простой и эффективный способ сделать это?