Как сделать теги для нескольких таблиц?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Grazio
Сообщения: 124
Зарегистрирован: 2015.01.24, 15:31

Как сделать теги для нескольких таблиц?

Сообщение Grazio »

Всем привет!
Товарищи, посоветуйте, пожалуйста, как правильно организовать систему тегов для мультиязычного сайта.
Сайт предназначен для изучения различных языков.
Планирую сделать по одной таблице на каждую часть речи и проч.
Перевод этих частей речи планирую сделать через yii2-translated-behavior
каждая типовая страница сайта - это как бы пост о той или иной части речи. Каждый пост должен содержать теги.
В yii2-taggable описан случай, когда мы делаем теги для записи одной таблицы.
Собственно, вопросы:
1)Как сделать теги, чтобы один тег мог относиться не только к записям одной таблицы, а к к разным таблицам (т.е. частям речи)?
2)Как организовывать локализацию тегов?
Спасибо.
webinvader
Сообщения: 12
Зарегистрирован: 2010.09.12, 16:30

Re: Как сделать теги для нескольких таблиц?

Сообщение webinvader »

1) В yii2-taggable как раз один тег и относится к записями из разных таблиц. Там в примере в документации все теги лежат в {{%tag}} и связаны с {{%posts}}' посредством таблицы {{%post_tag_assn}}. Т.е. один и тот же тег может быть привязан к разным сущностям.

2) Можно, как вариант, хранить все вместе, т.е в таблице {{%tag}} будут лежать теги на всех языках а к конкретной записи уже привязывать только теги на том языке, который нужен (в {{%post_tag_assn}} cвязывать по tag_id+ post_id + lang_id ) . Но подойдет Вам такой вариант или нет, зависит от масштаба Вашего проекта
Grazio
Сообщения: 124
Зарегистрирован: 2015.01.24, 15:31

Re: Как сделать теги для нескольких таблиц?

Сообщение Grazio »

webinvader писал(а): 2017.09.25, 13:53 1) В yii2-taggable как раз один тег и относится к записями из разных таблиц. Там в примере в документации все теги лежат в {{%tag}} и связаны с {{%posts}}' посредством таблицы {{%post_tag_assn}}. Т.е. один и тот же тег может быть привязан к разным сущностям.
Один и тот же тег привязан к разным сущностям одной таблицы. А мне нужно, чтобы был привязан к разным сущностям разных таблиц.
webinvader писал(а): 2017.09.25, 13:53 2) Можно, как вариант, хранить все вместе, т.е в таблице {{%tag}} будут лежать теги на всех языках а к конкретной записи уже привязывать только теги на том языке, который нужен. Но подойдет Вам такой вариант или нет, зависит от масштаба Вашего проекта
Как определить грань масштабности, где и какой вариант следует использовать?

p.s.
вот пока схему примерно так представляю, покритикуйте, плз.
Изображение
Суть в том, что, получается, в таблице post_tag_assn мы должны хранить ещё один атрибут, по которому мы будем определять, к какой части речи(то бишь таблице) он относится.
Ответить