[miniShop2 4.0.0-beta] - Разбор нововведений. Изменена связь между заказом и адресом

В серии коротких заметок расскажу и детально покажу что нового мы сделали для Вас в новой версии miniShop2 Для MODX2

На очереди информация для разработчиков об изменениях связи между объектами msOrder и msOrderAddress


Как была устроена связь объектов до версии 4.0.0

С первых версий minishop2 две модели msOrder и msOrderAdress были независимы друг от друга.
По задумке автора, клиент мог создавать какое-то количество сохраненных адресов и потом использовать их постоянно. К сожалению задумка осталась задумкой и на уровне фронта не была реализована. Я, например, не знал о том, что была заложена такая идея, пока не начал глубоко вникать в архитектуру.

Многие тоже не знали об этом — потому, как начал поступать один и тот же вопрос. Почему при удалении заказа не удаляется адрес заказа.

Что было сделано

Подумав, поспорив во внутреннем круге разработчиков — было решено поступить следующем образом. Теперь Адрес заказа msOrderAddress это полностью зависимая от msOrder таблица. Модель Адреса будет просто расширять заказ точно также, как modUserProfile расширяет модельку modUser.
Соответственно запись об адресе будет удаляться вместе с записью о заказе.

Немного технических подробностей

В модели msOrderAddress добавлено поле order_id для связи с объектом заказа. Заполняется автоматически.
В модели msOrder удалено поле address. Связь с таблицей адреса теперь работает через id

Связь между объектами изменена с
composite alias="Address" class="msOrderAddress" local="address" foreign="id" cardinality="one" owner="local"/>

на

<composite alias="Address" class="msOrderAddress" local="id" foreign="order_id" cardinality="one" owner="local"/>

А как же множественные сохраненные адреса?

Эту идею мы конечно же сохраним и доработаем. В следующих версиях компонента появится дополнительная сущность msCustomerAddress для хранения собственных адресов покупателя.
Также будет реализована возможность сразу из коробки сохранять и выбирать адрес из уже сохраненных.

Таким образом мы закладываем и будем дальше развивать личный кабинет клиента из коробки, со всеми классическими возможностями. Надеюсь эта новость будет встречена вами с радостью.

Вы всегда можете поддержать и ускорить подобные инициативы через финансовую поддержку

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

Поддержать нас можно, используя следующие каналы для доната:
Огромное спасибо, всем кто поддерживает!
Николай Савин
22 сентября 2022, 11:25
modx.pro
837
+12
Поблагодарить автора Отправить деньги

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

Максим
05 октября 2022, 10:31
0
Помнится, видел даже готовое дополнение, которое позволяло создавать несколько адресов доставки из личного кабинета и при заказе выбирать… Эта функция достаточно удобная, сам пользуюсь на всяких ДодоПиццах ))
      Артур Шевченко
      05 октября 2022, 10:58
      0
      Я думаю, что там адреса привязывались к пользователю, поэтому компонент будет работать.
        Николай Савин
        06 октября 2022, 11:06
        0
        Насколько я понимаю наше обновление сломает этот компонент.
          Артур Шевченко
          06 октября 2022, 11:18
          0
          Почему ты так думаешь?
          Максим
          14 октября 2022, 19:37
          0
          Если удалять заказы, тогда да, адреса будут удаляться тоже. А так вроде не должно.
          ===
          Хотя нет, если таблицы жестко связаны, тогда он просто не даст создать адрес без заказа.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7