У меня есть три модели: "Article", "ArticleTranslation", Tag ".
Переводы статей на разных языках хранятся в ArticleTranslation.
Модель" Article"имеет отношение один ко многим с моделью " ArticleTranslation ", а модель " ArticleTranslation " имеет полиморфный многие ко многим связь с моделью " Tag ".
Мне нужно определить удобный ярлык, чтобы легко собрать все теги статьи для данной статьи, и мне нужно определить удобный ярлык, чтобы легко собрать все статьис указанным тегом.
для перевода статьи, которую я использую переводимый с помощью laravel пакет.
таблицы этих отношений:
статьи:
id - integer
article_translations:
id - integer
article_id - integer
locale - string
title - string
slug - string
теги:
id - integer
name - string
slug - string
тегов:
tag_id - integer
taggable_id - integer
taggable_type - string
Модель товара:
class Article extends Model
{
use Translatable;
public $translatedAttributes = ['title', 'slug', 'description', 'body'];
}
Модель перевода статьи:
class ArticleTranslation extends Model
{
use Sluggable;
public $timestamps = false;
protected $fillable = ['title', 'slug', 'description', 'body'];
public function sluggable()
{
return [
'slug' => [
'source' => 'title',
],
];
}
public function tags()
{
return $this->morphToMany(Tag::class, 'taggable');
}
}
Tag Модель:
lass Tag extends Model
{
use Sluggable;
protected $fillable = ['name'];
public function sluggable()
{
return [
'slug' => [
'source' => 'name',
],
];
}
public function articleTranslate()
{
return $this->morphedByMany(ArticleTranslation::class, 'taggable');
}
}