关系返回空值时如何加载默认翻译?

时间:2019-03-18 17:52:19

标签: laravel eloquent laravel-5.7

我正在寻找翻译问题的解决方案。当我必须返回翻译时,在给定的语言环境中找不到问题,就会发生问题。我需要返回默认值。

这是我的代码,它返回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(用于默认加载)

有没有更简单,更有效的方法来做到这一点?

0 个答案:

没有答案