Modèles
Les modèles dans Swell, adaptez-les à votre projet.
Les modèles de données
Swell propose une collection de modèles prêts à l’emploi, conçus pour couvrir les besoins courants d’un projet e-commerce moderne.
Ces modèles servent de base solide, mais restent entièrement personnalisables afin de s’adapter à la structure et aux spécificités de votre application.
Vous pouvez ainsi les modifier ou en créer de nouveaux selon les exigences de votre domaine métier, tout en profitant d’une intégration fluide avec l’écosystème Swell.
Adapter un modèle
Les modèles Swell sont basiquement situés dans le dossier app/Models, à l’exception des fonctionnalités
optionnelles dont les modèles sont placés dans app/Modules/Feature/Models.
Ils sont associés à leurs fichiers de migration respectifs dans database/migrations ou
Modules/Feature/database/migrations, permettant de définir la structure des tables correspondantes.
Swell n’impose aucune logique métier. Les modèles proposés servent de socle initial, à adapter librement. Pour toute modification de structure ou comportement, référez-vous à la documentation officielle de Laravel.
Structure des modèles
Brand
| Champ | Type |
|---|---|
name | string |
slug | string unique |
logo_url | string nullable |
Category
| Champ | Type |
|---|---|
name | string |
slug | string unique |
description | text nullable |
status | boolean defaut:true |
parent_id | nullable nullOnDelete |
HasMany(Product).
Product
| Champ | Type |
|---|---|
name | string |
slug | string unique nullable |
sku | string unique |
description | text |
short_description | string max:500 |
price | decimal:10,2 |
discount_price | decimal:10,2 |
cost_price | decimal:10,2 |
stock | unsignedInteger default:0 |
reorder_level | unsignedInteger default:10 |
sales_count | unsignedInteger default:0 |
status | boolean default:true |
meta_title | string nullable |
meta_description | string max:255 nullable |
meta_keywords | string max:255 nullable |
brand_id | integer restrictOnDelete |
category_id | integer nullOnDelete |
collection_id | integer nullable nullOnDelete |
BelongsTo(Brand).
HasMany(ProductImage).
BelongsTo(Collection).
BelongsToMany(Wishlist).
HasMany(Comment).
Collection
| Champ | Type |
|---|---|
title | string |
slug | string unique |
Collection permet d’associer plusieurs produits entre eux au sein d’une même collection.
ProductImage
| Champ | Type |
|---|---|
image_url | string |
alt_text | string nullable |
is_featured | boolean default:false |
order | unsignedInteger |
Review
| Champ | Type |
|---|---|
title | string |
comment | text nullable |
rating | unsignedTinyInteger default:0 |
user_id | integer cascadeOnDelete |
product_id | integer cascadeOnDelete |
BelongsTo(Product).
Cart
| Champ | Type |
|---|---|
session_id | string nullable |
user_id | integer nullable cascadeOnDelete |
HasMany(CartItem).
CartItem
| Champ | Type |
|---|---|
cart_id | integer cascadeOnDelete |
product_id | integer cascadeOnDelete |
quantity | unsignedInteger default:1 |
BelongsTo(Cart).
Wishlist
| Champ | Type |
|---|---|
user_id | integer cascadeOnDelete |
BelongsToMany(Product).
Order
| Champ | Type |
|---|---|
order_number | string unique |
stripe_checkout_session_id | string |
amount_discount | unsignedInteger |
amount_subtotal | unsignedInteger |
amount_total | unsignedInteger |
billing_address | json |
shipping_address | json |
user_id | integer cascadeOnDelete |
BelongsTo(User).
OrderItem
| Champ | Type |
|---|---|
name | string |
description | text |
price | unsignedInteger |
quantity | unsignedInteger |
amount_discount | unsignedInteger |
amount_total | unsignedInteger |
order_id | integer |
product_id | integer |
BelongsTo(Product).
Banner
| Champ | Type |
|---|---|
message | string |
is_active | boolean |
order | unsignedInteger default:0 |