Как загрузить перевод по умолчанию, когда отношение возвращает ноль? - PullRequest
0 голосов
/ 18 марта 2019

Я ищу решение проблемы перевода.Проблема возникает, когда мне нужно вернуть перевод, и он не найден для данной локали.Вместо этого мне нужно вернуть значение по умолчанию.

Вот мой код, который возвращает 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);
}

Я былдумая о двух решениях:

  1. Получить все переводы и отфильтровать для одного соответствующего $ locale / или значения по умолчанию, если не найдено (для всех языков будут приняты строки)
  2. Проверить, существует ли отношение -Я думаю, что это приведет ко второму запросу, если $locale не найден (для загрузки по умолчанию)

Есть ли более простой и эффективный способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...