Как я могу иметь дело с дизайном базы данных купонов? - PullRequest
1 голос
/ 07 февраля 2020

У меня есть простая электронная коммерция через Laravel, и у меня есть несколько вопросов о дизайне базы данных COUPON, что мне нужно сделать следующим образом:

1 - мне нужен нормальный купон для оформления покупки (когда пользователь добавляет все продукты, которые ему нужны, затем ставьте купон, это будет скидка от общей цены). Я закончил с этим:

 Schema::create('coupons', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('code');
        $table->enum('type', ['percentage', 'numeric']);
        $table->integer('value');
        $table->integer('count')->nullable();
        $table->date('expired_at');
        $table->timestamps();
  });

2 - мне нужно сделать скидку на товары одной категории (чтобы скидка была на все товары, которые относятся к категории футболок).

How the design structure of this point?

3 - Мне нужно сделать скидку на определенный c продукт или продукты, которые я хочу на него поставить.

How the design structure of this point?

Может ли кто-нибудь помочь мне, пожалуйста? с этим? Так растерялся!

Обновление:

таблица продуктов:

id - name - price - quantity - category_id - brand_id - created_at

таблица категорий

 id - category_name - created_at

Таблица заказов

id - status - user_id - address_id - coupon_id - created_at

сводная таблица order_product

order_id - product_id - quantity

Ответы [ 2 ]

2 голосов
/ 07 февраля 2020

Очень интересно! Я думаю, что хорошим подходом должна быть сводная таблица с отношением полиморф c. Что-то вроде этого:

id - couponable_type - couponable_id - coupon_id - "whatever_data"
------------------------------------------------------------------
1  - category        - 1             - 1         - ....
2  - order           - 1             - 2         - ....
3  - product         - 1             - 1         - ....
1 голос
/ 07 февраля 2020

Так как КУПОН ** имеет отношение по умолчанию с ** ПРОДУКТАМИ , было бы здорово создать некоторые отношения, например так:

  • Имеет ли у продукта будет один купон или много?
  • Будет ли купон принадлежать одному продукту или многим?

Я думаю, что было бы неплохо дать продукту возможность использовать множество ** купонов , а купон УВЕРЕН, что он будет принадлежать многим продуктам. В этом случае вы должны добавить отношение «многие ко многим» между купонами и продуктами.

То же самое с products и category , продукт должен иметь много категорий и позже должны иметь или принадлежать ко многим ** продуктам.

Если вы go с таким подходом, вы можете легко набрать очки 01 и 02 . Затем вы можете создать купоны, а затем прикрепить их к определенному c продукту или продуктам или категории продукта.

Чтобы просмотреть купоны для продукта или категории, вы можете сделать что-то вроде этого:

$product_coupons = Product::findOrFail($id)->coupons;
$category_coupons = ProductCategory::findOrFail($id)->coupons;

В Blade вы получаете доступ к купонам следующим образом:

@foreach($product->coupons as $coupon)
{{ $coupon->code }}
@endforeach

Но подход @Nahuelsgk хороший, продвинутый, но чистый, я думаю, что лучше использовать polymorphi c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...