Можно ли сделать автоматическое добавление столбцов в таблицу?

Делаю выгрузку из 1С (Minishop не используется). Раньше использовал TV для свойств товара, но сейчас, в целях оптимизации, думаю сделать для свойств отдельную таблицу. Можно ли как-то через api в неё столбцы добавлять, чтоб при этом map.inc файл обновлялся?
Есть ещё вариант для свойств товара использовать MIGX-таблицу, но тогда фильтры делать не очень удобно.
Как считаете, какие варианты хранения свойств товара наиболее оптимальны для больших интернет-магазинов?
Лёша
21 марта 2022, 11:07
modx.pro
186
0

Комментарии: 8

Наумов Алексей
21 марта 2022, 11:43
+1
Может товары проще на miniShop2 переделать?
Там же это все реализовано уже, что свой велосипед изобретать?
    Лёша
    21 марта 2022, 15:40
    0
    Подскажите, а у опций товара в miniShop2 есть какие-то преимущества перед TV в плане скорости?
      Николай Савин
      21 марта 2022, 19:56
      0
      Обращение к TV по его имени это два запроса в базу данных. Так как сама сущность TV и значение находятся в разных таблицах. Сначала получить ID TV, затем по идентификаторам TV и ресурса выбрать значение поля.
      Обращение к опции минишопа это один запрос. Как следствие разница конечно есть.
        Алексей Смирнов
        21 марта 2022, 21:40
        0
        Как-то тестировал 200к товаров с 20 опциями и 20 тв по отдельности. В результате принципиальной разницы не увидел в цифрах. На опциях быстрее примерно на 10..20%. msProd (опции по умолчанию цепляет) БД 0,47....0,51c против pdoRes + 20TV — 0,54...0,58c. При этом в выборку попадало примерно 10к товаров.
        Если начинаем фильтровать глубже, то скорость увеличивается.
          Лёша
          21 марта 2022, 22:05
          0
          msProd (опции по умолчанию цепляет)
          А можно как-то выбрать, какие цеплять? На случай, если опций много будет.
          В документации нашёл только:
          msProducts автоматически подключает и выводи все опции товара в плейсхолдеры вида [[+ключ_опции]].
            Алексей Смирнов
            21 марта 2022, 22:31
            0
            можно попробовать через параметр select, если не ошибаюсь то добавьте это:
            синтаксис не помню, вроде так:
            &select=`{"msProductData":"color,ves,dlinna"}`
            может кто точнее подскажет.
      Семён Кудрявцев
      21 марта 2022, 16:12
      1
      0
      Если хочешь прям для больших магазинов и чтобы удобно всем управлять и хранить, то почитай про архитектурную модель EAV, её используют почти все популярные движки интернет магазинов, начиная с OpenCart, Magento.
      Хорошо бы этот механизм и в miniShop2 когда-то увидеть, то, что сейчас в нем есть уже на 500k товаров с парой десятков характеристик работает печально. Поэтому если нужен крупный магазин, я бы смотрел в сторону:
      1) Aimeos (Laravel)
      2) Bagisto (Laravel)
        Николай Савин
        21 марта 2022, 19:57
        0
        EAV конечно завезем. Это проговорено и плюс-минус запланировано. Правда пока без конкретики.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8