我有这两个模型:Tag
并且Translate
,我有这些表:、、、、tags
标签模型使用可翻译。translates
translatables
我的表格列是这样的:
translates: translatables: tags:
id name lang | translate_id translatable_id translatable_type | id
-- ---- ---- | ------------- --------------- ----------------- | --
| |
我想编写一个函数来获取标签的当前翻译,app locale
这意味着我应该根据可翻译表数据查询翻译表,并在翻译表中使用translateble_id
并translatable_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();
但我想在模型和雄辩中使用一个函数。