У меня есть меню выбора, где пользователи могут выбирать определенные функции, и в зависимости от того, что они выбрали, появляется новое меню выбора с новыми параметрами.Этот процесс может повторяться несколько раз в зависимости от того, что они выбирают.
Например, если в меню выбора отображаются следующие пункты: apple, mango, orange.
И пользователь выбирает apple
: они получаттри дополнительных параметра, которые относятся к яблоку - brown, red, green.
Если пользователь, например, выберет orange
, он может увидеть red, orange.
Обратите внимание, что красный цвет появляется дважды.
Моя главная проблема - найти хороший способотследить его.
Мое текущее решение
У меня есть две таблицы - features
и feature_group.
feature_group
имеет столбцы: id
, name
features
имеет столбцы: id
, group_id
, name
, links
Если мы вернемся к предыдущему примеру,
В настоящее время я сохраняю параметрыв разделе links
.
feature_group
таблица:
| id | name |
|----|--------|
| 1 | Fruit |
| 2 | Colour |
| 3 | Taste |
features
таблица:
| id | group_id | name | links |
|----|----------|--------|-----------|
| 1 | 1 | Apple | |
| 2 | 1 | Mango | |
| 3 | 1 | Orange | |
| 4 | 2 | Red | 1,2,3 |
| 5 | 2 | Green | 1,2 |
| 6 | 2 | Orange | 3 |
| 7 | 3 | Slicy | 1,2;1,2,3 |
| 8 | 3 | Okay | 1,2,3,4 |
| 9 | 3 | Bad | 2,4 |
Как видите, столбец links
содержит id
из features
в той же таблице .Так, например, 4-я строка с именем Red
отображается, когда пользователь выбирает любой из параметров Apple, Mango, Orange.
Аналогично, если он не может выбрать Bad
в качестве третьего параметра, если он выбрал что-либокроме Mango
для первой опции и Red
для второй опции.
;
также используется для включения других пар опций.
Надеюсь, это имеет смысл.
Это моя структура таблицы.В коде я делаю это как массив:
$color = [
'Apple' => [
'Red',
'Green',
],
'Mange' => [
'Red',
'Green',
],
'Orange' => [
'Red',
'Orange',
],
];
$taste = [
'Red' => [
'Slicy'
],
// so on...
];
Я не думаю, что это лучший способ сделать это.Особенно, если я захочу добавить еще что-нибудь позже, мне придется много модифицировать свои данные, что может быть хлопотно.
Как можно решить эту проблему?