0

我有这两个模型:Tag并且Translate,我有这些表:、、、、tags标签模型使用可翻译。translatestranslatables

我的表格列是这样的:

  translates:                      translatables:                            tags: 
id     name  lang   |  translate_id    translatable_id     translatable_type |  id
--     ----  ----   |  -------------   ---------------     ----------------- |  --
                    |                                                        |

我想编写一个函数来获取标签的当前翻译,app locale这意味着我应该根据可翻译表数据查询翻译表,并在翻译表中使用translateble_idtranslatable_type查找 id 并根据 lang 获取名称。你知道我该怎么做吗?

这是可翻译的特征:

trait Translatable{
    public function translates(){
        return $this->morphToMany(Translate::class,'translatable','translatables','translatable_id','translate_id');
    }
} 

这就是我获取语言环境的方式:

$locale=app()->getLocale();

我使用查询构建器获得标签翻译,例如:

$locale=app()->getLocale();
$tags=DB::table('translates as T')
       ->where('lang','=',$locale)
       ->join('translatables as R','R.translate_id','=','T.id')
       ->where('R.translatable_type','=','App\Models\Tag')
       ->join('tags as M','R.translatable_id','=','M.id')
       ->get();

但我想在模型和雄辩中使用一个函数。

4

0 回答 0