Appearance
Product Detail Model
| DB Table Name | {wp_db_prefix}_fct_product_details |
|---|---|
| Schema | Check Schema |
| Source File | fluent-cart/app/Models/ProductDetail.php |
| Name Space | FluentCart\App\Models |
| Class | FluentCart\App\Models\ProductDetail |
Attributes
| Attribute | Data Type | Comment |
|---|---|---|
| id | Integer | Primary Key |
| post_id | Integer | Reference to WordPress post (product) |
| fulfillment_type | String | Fulfillment type (physical, digital) |
| min_price | Decimal | Minimum price |
| max_price | Decimal | Maximum price |
| default_variation_id | String | Default variation ID |
| variation_type | String | Variation type (simple, variable) |
| stock_availability | String | Stock availability status |
| other_info | JSON | Additional product information |
| default_media | JSON | Default media information |
| manage_stock | String | Whether to manage stock |
| manage_downloadable | String | Whether to manage downloadable files |
| created_at | Date Time | Creation timestamp |
| updated_at | Date Time | Last update timestamp |
Usage
Please check Model Basic for Common methods.
Accessing Attributes
php
$productDetail = FluentCart\App\Models\ProductDetail::find(1);
$productDetail->id; // returns id
$productDetail->post_id; // returns post ID
$productDetail->min_price; // returns minimum price
$productDetail->max_price; // returns maximum priceRelations
This model has the following relationships that you can use
product
Access the associated product (WordPress post)
- return
FluentCart\App\Models\ProductModel
Example:
php
// Accessing Product
$product = $productDetail->product;
// For Filtering by product relationship
$productDetails = FluentCart\App\Models\ProductDetail::whereHas('product', function($query) {
$query->where('post_status', 'publish');
})->get();galleryImage
Access the associated gallery image meta
- return
FluentCart\App\Models\WpModels\PostMetaModel
Example:
php
// Accessing Gallery Image
$galleryImage = $productDetail->galleryImage;variants
Access all product variations
- return
FluentCart\App\Models\ProductVariationModel Collection
Example:
php
// Accessing Variants
$variants = $productDetail->variants;
// For Filtering by variants relationship
$productDetails = FluentCart\App\Models\ProductDetail::whereHas('variants', function($query) {
$query->where('status', 'active');
})->get();attrMap
Access all attribute relations
- return
FluentCart\App\Models\AttributeRelationModel Collection
Example:
php
// Accessing Attribute Relations
$attrMap = $productDetail->attrMap;Methods
Along with Global Model methods, this model has few helper methods.
setOtherInfoAttribute($value)
Set other info with automatic JSON encoding (mutator)
- Parameters
- $value - mixed (array, object, or string)
- Returns
void
Usage
php
$productDetail->other_info = ['custom_data' => 'value', 'settings' => ['key' => 'value']];
// Automatically JSON encodes arrays and objectsgetOtherInfoAttribute($value)
Get other info with automatic JSON decoding (accessor)
- Parameters
- $value - mixed
- Returns
mixed
Usage
php
$otherInfo = $productDetail->other_info; // Returns decoded value (array, object, or string)setDefaultMediaAttribute($value)
Set default media with automatic JSON encoding (mutator)
- Parameters
- $value - mixed (array, object, or string)
- Returns
void
Usage
php
$productDetail->default_media = ['url' => 'image.jpg', 'alt' => 'Product Image'];
// Automatically JSON encodes arrays and objectsgetDefaultMediaAttribute($value)
Get default media with automatic JSON decoding (accessor)
- Parameters
- $value - mixed
- Returns
mixed
Usage
php
$defaultMedia = $productDetail->default_media; // Returns decoded value (array, object, or string)getFormattedMinPriceAttribute()
Get formatted minimum price (accessor)
- Parameters
- none
- Returns
string
Usage
php
$formattedMinPrice = $productDetail->formatted_min_price; // Returns formatted price stringgetFormattedMaxPriceAttribute()
Get formatted maximum price (accessor)
- Parameters
- none
- Returns
string
Usage
php
$formattedMaxPrice = $productDetail->formatted_max_price; // Returns formatted price stringgetFeaturedMediaAttribute()
Get featured media from gallery (accessor)
- Parameters
- none
- Returns
mixed
Usage
php
$featuredMedia = $productDetail->featured_media; // Returns first gallery image or nullhasPriceVariation()
Check if product has price variation
- Parameters
- none
- Returns
boolean
Usage
php
$hasVariation = $productDetail->hasPriceVariation(); // Returns true if min_price != max_pricegetStockAvailability($variationId = null)
Get stock availability information
- Parameters
- $variationId - integer|null (default: null)
- Returns
array
Usage
php
$stockInfo = $productDetail->getStockAvailability();
// Returns array with manage_stock, availability, class, available_quantityUsage Examples
Get Product Details
php
$productDetail = FluentCart\App\Models\ProductDetail::find(1);
echo "Min Price: " . $productDetail->formatted_min_price;
echo "Max Price: " . $productDetail->formatted_max_price;
echo "Stock: " . $productDetail->getStockAvailability()['availability'];Get Product with Variations
php
$productDetail = FluentCart\App\Models\ProductDetail::with(['product', 'variants'])->find(1);
$product = $productDetail->product;
$variants = $productDetail->variants;Create Product Detail
php
$productDetail = FluentCart\App\Models\ProductDetail::create([
'post_id' => 123,
'fulfillment_type' => 'physical',
'min_price' => 19.99,
'max_price' => 29.99,
'variation_type' => 'simple',
'stock_availability' => 'in-stock',
'manage_stock' => '1',
'manage_downloadable' => '0'
]);Check Stock Availability
php
$productDetail = FluentCart\App\Models\ProductDetail::find(1);
$stockInfo = $productDetail->getStockAvailability();
if ($stockInfo['manage_stock']) {
echo "Stock: " . $stockInfo['available_quantity'];
} else {
echo "Stock: " . $stockInfo['availability'];
}Get Featured Media
php
$productDetail = FluentCart\App\Models\ProductDetail::find(1);
$featuredMedia = $productDetail->featured_media;
if ($featuredMedia) {
echo "Featured Image: " . $featuredMedia['url'];
}