Использование жестко заданного набора значений вместо традиционной модели Eloquent в Laravel - PullRequest
0 голосов
/ 26 апреля 2018

Я хотел бы создать отношение «многие ко многим» между двумя вещами: Примечания и Ярлыки . Однако я бы хотел определить сами метки в коде, а не в таблице базы данных.

Помимо таблицы notes для представления модели Note, я ожидаю, что у меня будет сводная таблица (labels_notes) с двумя столбцами: note_id и label.

Итак, мой вопрос: Как будут работать методы загрузки, получения, установки и получения заметок по меткам на модели Note?

Справочная информация: Основная причина, по которой ярлыки нужны в коде, а не в качестве содержимого таблицы, заключается в том, что они представляют собой небольшой фиксированный набор значений; пользователи не смогут изменять их. Кроме того, может потребоваться специальная логика в коде вокруг определенных меток. Я решил сохранить их в столбце JSON на notes, но обеспокоен влиянием на производительность при поиске Notes по метке.

1 Ответ

0 голосов
/ 27 апреля 2018

Решение, которое я выбрал, состояло в том, чтобы использовать традиционную модель Eloquent для меток (включая выделенную таблицу базы данных), но внедряет в нее нужные значения посредством миграции и использует строковый первичный ключ. That то, как мы можем использовать Eloquent по назначению, а не бороться с ним.

Использование строкового первичного ключа означает, что мы можем писать логику, основанную на определенных метках, не беспокоясь о произвольных числовых идентификаторах (то есть "id = news" vs "id = 12112"). Обратите внимание, что для этого также необходимо добавить public $incrementing = false; в класс модели Label.

Внедрение необходимых меток с помощью миграции позволяет избежать дополнительной задачи настройки при развертывании, а также не связывает наш код с внешним процессом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...