5.4 KiB
Product Model
The Product
model is designed to represent items for sale within your application. It includes essential fields for describing products, managing their inventory, and associating them with multiple categories.
Fields Description
1. id
- Type: Integer
- Description: A unique identifier for each product. This field is automatically generated and serves as the primary key for the model.
2. name
- Type: Text
- Description: The name of the product. This title is what users will see when browsing products.
3. slug
- Type: String
- Description: A unique URL-friendly version of the product name that can be used in web addresses. This field is indexed to improve lookup performance.
4. description
- Type: LongText (Nullable)
- Description: A detailed description of the product. This text provides users with comprehensive information about the features and specifications.
5. table
- Type: LongText (Nullable)
- Description: This field can be used to store tabular data about the product, such as specifications or comparisons.
6. excerpt
- Type: Text (Nullable)
- Description: A brief summary of the product. This will appear on the product page under the product name and is useful for SEO purposes.
7. sku
- Type: String (Nullable, Unique)
- Description: SKU refers to a Stock-keeping Unit, which is a unique identifier for each distinct product. This helps in inventory management.
8. virtual
- Type: Boolean (Nullable)
- Description: This field indicates whether the product is a non-physical item (e.g., a service) that does not require shipping. The default value is
false
.
9. downloadable
- Type: Boolean (Nullable)
- Description: Indicates if purchasing the product grants the customer access to a downloadable file, such as software. The default value is
false
.
10. price
- Type: Unsigned Big Integer (Nullable)
- Description: The selling price of the product. This field is indexed to improve lookup performance.
11. buy_price
- Type: Unsigned Big Integer
- Description: The cost price of the product, which is used to calculate the gross margin. The default value is
0
.
12. category_id
- Type: Unsigned Big Integer
- Description: The ID of the main category to which this product belongs.
13. user_id
- Type: Unsigned Big Integer
- Description: The ID of the user who created or owns the product.
14. on_sale
- Type: Boolean (Nullable)
- Description: This field indicates whether the product is currently on sale. The default value is
true
.
15. stock_quantity
- Type: Unsigned Big Integer (Nullable)
- Description: The number of items available in stock for the product. The default is
0
.
16. stock_status
- Type: Enum
- Description: This field represents the availability status of the product and can take one of the following values: 'IN_STOCK', 'OUT_STOCK', or 'BACK_ORDER'. The default value is set to
IN_STOCK
.
17. rating_count
- Type: Unsigned Big Integer (Nullable)
- Description: The number of ratings given to the product. The default value is
0
.
18. average_rating
- Type: Decimal (3, 2) (Unsigned, Nullable)
- Description: The average rating of the product, calculated from the ratings received. The default is
0.00
.
19. status
- Type: Unsigned Tiny Integer
- Description: This field indicates the current status of the product. The default value is
0
.
20. view
- Type: Unsigned Big Integer
- Description: This field tracks the number of times the product has been viewed. The default value is
0
.
21. sell
- Type: Unsigned Big Integer
- Description: This field tracks the total number of sales for this product. The default is
0
.
22. image_index
- Type: Unsigned Tiny Integer
- Description: This field is used to specify which image to display for the product when there are multiple images associated.
23. theme
- Type: JSON (Nullable)
- Description: This field allows for customization of the product’s theme. Various design settings can be stored in JSON format. This field is optional.
24. canonical
- Type: Text (Nullable)
- Description: This field is used for SEO purposes, to indicate the canonical URL for the product to prevent duplicate content issues.
25. keyword
- Type: Text (Nullable)
- Description: A crucial keyword for SEO purposes, aiding in the product's search visibility. It is recommended to use relevant keywords to optimize the product for search engines.
Intermediary Table: category_product
The category_product
table serves as a many-to-many relationship bridge between products and categories. This means that a single product can belong to multiple categories, and a single category can have multiple products associated with it. The table consists of two foreign keys: category_id
, which references the id
field in the categories
table, and product_id
, which references the id
field in the products
table. Both foreign keys are set to delete the associated records from this table if either the product or category is deleted, ensuring data integrity.
By utilizing the Product
model in conjunction with the category_product
intermediary table, you can effectively manage and organize your products while allowing for flexibility in categorization.