How to Build a Multi-Vendor Marketplace with Laravel
Побудова маркетплейсу — це проблема роботи з даними.
Більшість розробників вважають, що найскладніше — це панель керування продавця. Це не так. Справжній виклик — це мультитенентність (multi-tenancy). Ви повинні переконатися, що кожен запит відповідає на одне питання: Кому належать ці дані?
Якщо ви побудуєте звичайний магазин, а потім спробуєте додати продавців, вам доведеться все переписувати. Вам доведеться прокидати ID продавця крізь кожну модель, кожен запит і кожен кошик. Якщо ви пропустите хоча б один фільтр, один продавець побачить замовлення іншого продавця. Це витік даних.
У вас є три варіанти:
- Побудувати самостійно: Ви пишете кожну умову обмеження видимості (scoping clause). Це дорого і ризиковано.
- Використовувати однотенентний магазин із доповненнями: Ви додаєте колонки продавців до схеми, яка не була для цього призначена. Ізоляція залишається крихкою.
- Використовувати мультитенентну основу: Використовуйте такий пакет, як Aimeos, який вбудовує ізоляцію в модель даних із першого дня.
Ось як перетворити звичайний магазин на маркетплейс за допомогою Aimeos:
Встановіть основу Виконайте цю команду для початку:
composer create-project aimeos/aimeos myshopУвімкніть режим декількох продавців Вам не потрібно переписувати базу даних. Просто змініть один рядок у вашому файлі .env:
SHOP_MULTISHOP=true
Цей прапор автоматично обмежує кожен маршрут, API та панель адміністратора конкретним сайтом. Система сама керує розділенням даних.
- Увімкніть самостійну реєстрацію
Щоб масштабуватися, дозвольте продавцям реєструватися самостійно. Додайте це у ваш .env:
SHOP_REGISTRATION=true
Нові продавці отримують доступ лише до власного каталогу, замовлень та клієнтів. Вони не можуть бачити нічого іншого.
Чому це працює:
Aimeos організовує все навколо «сайту». Кожен товар, ціна та замовлення мають ID сайту. Рівень даних фільтрує це автоматично. Вам не потрібно писати where site_id = ?, тому що система робить це за вас.
Цей підхід вирішує три основні проблеми:
- Безпека: Ізоляція даних є властивістю бази даних, а не частиною коду, про яку ви можете забути.
- Складність: Продавці можуть керувати складними продуктами, такими як підписки або набори, без зміни вашої схеми.
- Платежі: Ви можете використовувати такі розширення, як Stripe, для миттєвого розподілу платежів. Платформа бере комісію, а решту отримує продавець.
Досить будувати «труби». Почніть будувати свій маркетплейс.
Джерело: https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a
