How to Build a Multi-Vendor Marketplace with Laravel

Побудова маркетплейсу — це проблема роботи з даними.

Більшість розробників вважають, що найскладніше — це панель керування продавця. Це не так. Справжній виклик — це мультитенентність (multi-tenancy). Ви повинні переконатися, що кожен запит відповідає на одне питання: Кому належать ці дані?

Якщо ви побудуєте звичайний магазин, а потім спробуєте додати продавців, вам доведеться все переписувати. Вам доведеться прокидати ID продавця крізь кожну модель, кожен запит і кожен кошик. Якщо ви пропустите хоча б один фільтр, один продавець побачить замовлення іншого продавця. Це витік даних.

У вас є три варіанти:

  • Побудувати самостійно: Ви пишете кожну умову обмеження видимості (scoping clause). Це дорого і ризиковано.
  • Використовувати однотенентний магазин із доповненнями: Ви додаєте колонки продавців до схеми, яка не була для цього призначена. Ізоляція залишається крихкою.
  • Використовувати мультитенентну основу: Використовуйте такий пакет, як Aimeos, який вбудовує ізоляцію в модель даних із першого дня.

Ось як перетворити звичайний магазин на маркетплейс за допомогою Aimeos:

  1. Встановіть основу Виконайте цю команду для початку: composer create-project aimeos/aimeos myshop

  2. Увімкніть режим декількох продавців Вам не потрібно переписувати базу даних. Просто змініть один рядок у вашому файлі .env: SHOP_MULTISHOP=true

Цей прапор автоматично обмежує кожен маршрут, API та панель адміністратора конкретним сайтом. Система сама керує розділенням даних.

  1. Увімкніть самостійну реєстрацію Щоб масштабуватися, дозвольте продавцям реєструватися самостійно. Додайте це у ваш .env: SHOP_REGISTRATION=true

Нові продавці отримують доступ лише до власного каталогу, замовлень та клієнтів. Вони не можуть бачити нічого іншого.

Чому це працює: Aimeos організовує все навколо «сайту». Кожен товар, ціна та замовлення мають ID сайту. Рівень даних фільтрує це автоматично. Вам не потрібно писати where site_id = ?, тому що система робить це за вас.

Цей підхід вирішує три основні проблеми:

  • Безпека: Ізоляція даних є властивістю бази даних, а не частиною коду, про яку ви можете забути.
  • Складність: Продавці можуть керувати складними продуктами, такими як підписки або набори, без зміни вашої схеми.
  • Платежі: Ви можете використовувати такі розширення, як Stripe, для миттєвого розподілу платежів. Платформа бере комісію, а решту отримує продавець.

Досить будувати «труби». Почніть будувати свій маркетплейс.

Джерело: https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a