Динамические настраиваемые поля: JSON, Pivot, morphToMany? - PullRequest
0 голосов
/ 10 июля 2019

В настоящее время я работаю над функцией "настраиваемых полей" для моего приложения Laravel.

Что он должен делать

Каждый CustomField должен редактироваться пользователем.CustomField может иметь type (string, int, ...) и value.

Теперь созданные CustomField s могут быть добавлены в другую модель (возможно: User).

Ожидаемый результат

Значения настраиваемых полей должны вызыватьсяиспользуя что-то вроде $user->fields->company->value

Должно быть легко перебирать поля вроде этого: $user->fields()->each(...)

Моя проблема

Я не уверен, в какую сторону идтиКонечно, я мог бы просто создать модель с именем CustomField и таблицу с

  • id
  • type

и сохранить ихв User как JSON ($user->fields будет иметь тип JSON).Но я не уверен, является ли это лучшим способом, потому что я также хотел бы сделать поля для поиска позже.Так, может быть, Pivot это путь?Или даже morphToMany ?

Какой путь является наиболее подходящим для Laravel-стиля?

Спасибо за ваши мысли (и, может быть, 1-2 примера ;-))

1 Ответ

0 голосов
/ 10 июля 2019

Структура приложения не уникальна и может быть реализована по-разному для разработчика. Однако в этом случае наилучшей практикой может быть отдельная модель для CustomField.

  1. Чтобы эффективно использовать значение настраиваемых полей для поиска, Laravel Scout является очень мощным выбором, который предоставляет простое решение на основе драйверов для добавления полнотекстового поиска к вашим моделям Eloquent.
  2. Насколько я понимаю вашу проблему, у каждого пользователя много CustomFields. Так что лучше иметь в разных таблицах и моделях.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...