У меня есть сценарий использования Nova, который я не знаю, как подойти.Вот как я представляю, что дела идут вниз: у меня есть общая модель Product
, к которой было бы прикреплено множество различных моделей Attribute
на основе отношения «многие ко многим» с использованием сводной таблицы.Сводная таблица также связывает данные (возможно, в форме JSON) с моделями атрибутов.
Допустим, у нас есть атрибут с именем «том» и он имеет тип «число».При подключении (в терминах Nova) тома Attribute
к Product
пользователь также вводит число, которое затем будет сохранено в сводной таблице.
Тогда у нас также есть Attribute
с именем'color', который будет иметь тип 'select' и поле 'options' с фиксированным списком цветов.При присоединении цвета Attribute
к Product
пользователю будет предложено использовать раскрывающийся список, в котором он будет выбирать цвет из фиксированного списка цветов.
В настоящее время представляется, что поле Nova BelongsToManyне допускает такой вариант использования, поскольку в функции ->fields()
поля BelongsToMany нет способа сделать условную логику.В настоящее время я заблудился относительно того, как я мог бы обойти ограничения.
Моя текущая лучшая идея - либо расширить поле BelongsToMany (как на стороне PHP, так и на стороне Vue) так, чтобы оно учитывало ранее описанные условные выражения.логика или создание «хакерского» пользовательского поля, которое входит в функцию ->fields()
, которая удаляет исходное поле BelongsToMany
select
из DOM и заменяет его собственным.Настраиваемое поле будет извлекать необходимые данные и отображать соответствующие поля данных.
TL; DR: я хочу присоединить модель Attribute
к модели Product
и отображать только определенные поля сводки в зависимости от Attribute
значение модели type
.
Кто-нибудь сталкивался с подобными встречами с полями meta / pivot, которые требуют дополнительных данных в Nova?