Overview
Collections provide a flexible way to group products together for any purpose: storefront categories, hero sliders, landing page features, seasonal promotions, or any other grouping a store requires. Products can be added to a collection explicitly or filtered by criteria, and collections can be nested to form a hierarchy. Each collection belongs to a collection group, allowing different sets of collections to be maintained independently for different parts of a storefront.Collection Groups
Collection groups act as top-level containers for collections. A store might have separate groups for a main catalog, seasonal promotions, or landing page features.Fields
Relationships
Creating a collection group
Collections
Fields
Relationships
Scopes
Creating a collection
Nested Collections
Collections form a tree hierarchy using the kalnoy/nestedset package. Child collections can be added using theappendNode method:
At least one root (parent) collection must exist before child collections can be created. This is important when using seeders to set up the initial catalog state.
Breadcrumbs
Thebreadcrumb accessor returns the translated names of all ancestor collections, which is useful for building breadcrumb navigation:
Querying the tree
The nested set package provides many methods for working with the tree. Here are some common examples:Products
Products are associated using aBelongsToMany relationship with a position pivot column for ordering.
Adding products
Sorting products
Thesort field on a collection determines how products are ordered. Lunar ships with the following sort options:
When a collection is updated, Lunar automatically dispatches the
UpdateProductPositions job to reorder products based on the current sort setting.
Channels
Collections use theHasChannels trait, enabling channel-based availability with optional scheduling. See Channels for full details.
Querying by channel
Customer Groups
Collections use theHasCustomerGroups trait, enabling customer group visibility with optional scheduling. See Customers for full details.
Querying by customer group
URLs
Collections use theHasUrls trait, which automatically generates URLs when a collection is created.
Media
Collections use theHasMedia trait (via Spatie Media Library), allowing images and other media to be attached.
Deletion Behavior
Collections use soft deletes. When a collection is deleted, all related pivot data is automatically detached:- Products
- Channels
- URLs (hard deleted)
- Customer groups
- Discounts