Skip to content

Tax Class Model ​

DB Table Name{wp_db_prefix}_fct_tax_classes
SchemaCheck Schema
Source Filefluent-cart/app/Models/TaxClass.php
Name SpaceFluentCart\App\Models
ClassFluentCart\App\Models\TaxClass

Guarded & Fillable ​

This model uses both $guarded and $fillable:

  • Guarded: ['id']
  • Fillable: ['title', 'meta', 'slug']

Lifecycle Hooks (booted) ​

The model registers lifecycle hooks in the booted() method:

  • Creating: Generates a unique slug from title via generateUniqueSlug(), but only when no slug was supplied — a slug passed in is kept as given.
  • Updating: If title has changed (is dirty), the slug is regenerated to match the new title. The built-in slugs standard, reduced, and zero are protected -- classes with those slugs are never re-slugged on title change.

Attributes ​

AttributeData TypeComment
idIntegerPrimary Key (guarded)
titleStringTax class title
descriptionTextTax class description
metaJSONAdditional metadata (manual JSON mutator/accessor)
slugStringURL-friendly slug (auto-generated from title)
created_atDate TimeCreation timestamp
updated_atDate TimeLast update timestamp

Usage ​

Please check Model Basic for Common methods.

Accessing Attributes ​

php
$taxClass = FluentCart\App\Models\TaxClass::find(1);

$taxClass->id; // returns id
$taxClass->title; // returns title
$taxClass->description; // returns description (column exists but is not mass-assignable)
$taxClass->slug; // returns slug
$taxClass->meta; // returns array (accessor)

Methods ​

Along with Global Model methods, this model has few helper methods.

setMetaAttribute($value) ​

Set meta with automatic JSON encoding (mutator). Encodes the value with json_encode(). Falls back to '[]' if encoding fails or value is falsy.

  • Parameters
    • $value - mixed (array, object, or string)
  • Returns void

Usage ​

php
$taxClass->meta = ['tax_rate' => 8.5, 'exempt_products' => [1, 2, 3]];
// Automatically JSON encodes arrays and objects

getMetaAttribute($value) ​

Get meta with automatic JSON decoding (accessor). Decodes the stored JSON string into an associative array.

  • Parameters
    • $value - mixed
  • Returns array - Decoded array, or empty array if value is falsy

Usage ​

php
$meta = $taxClass->meta; // Returns decoded array

generateUniqueSlug($title, $ignoreId = null) ​

Generate unique slug for tax class (protected static method). Uses Str::slug() to create a URL-friendly slug from the title, then appends a numeric suffix if the slug already exists. Falls back to 'tax-class' as the base slug if Str::slug() returns empty.

This method is called automatically by the model's lifecycle hooks -- you typically do not need to call it directly.

  • Parameters
    • $title - string
    • $ignoreId - integer|null (default: null) - Exclude this ID when checking for uniqueness (used during updates)
  • Returns string

Note

This method is protected static, so it is not callable from outside the model class. Slug generation happens automatically on create and on update (when the title changes).

Usage Examples ​

Get Tax Classes ​

php
$taxClass = FluentCart\App\Models\TaxClass::find(1);
echo "Title: " . $taxClass->title;
echo "Description: " . $taxClass->description;
echo "Slug: " . $taxClass->slug;

Create Tax Class ​

php
$taxClass = FluentCart\App\Models\TaxClass::create([
    'title' => 'Standard Tax',
    'meta' => [
        'tax_rate' => 8.5,
        'exempt_products' => [],
        'applicable_regions' => ['US', 'CA']
    ]
]);
// Slug will be automatically generated as "standard-tax"

Get All Tax Classes ​

php
$taxClasses = FluentCart\App\Models\TaxClass::all();

foreach ($taxClasses as $class) {
    echo "Class: " . $class->title . " (" . $class->slug . ")";
}

Get Tax Class by Slug ​

php
$taxClass = FluentCart\App\Models\TaxClass::where('slug', 'standard-tax')->first();

Update Tax Class ​

php
$taxClass = FluentCart\App\Models\TaxClass::find(1);
$taxClass->update([
    'title' => 'Updated Tax Class',
    'meta' => ['tax_rate' => 9.0, 'updated' => true]
]);
// Slug will be automatically updated if title changes

Get Tax Classes with Meta ​

php
$taxClasses = FluentCart\App\Models\TaxClass::all();

foreach ($taxClasses as $class) {
    $meta = $class->meta;
    if (isset($meta['tax_rate'])) {
        echo "Class: " . $class->title . " - Rate: " . $meta['tax_rate'] . "%";
    }
}

Search Tax Classes ​

php
$searchResults = FluentCart\App\Models\TaxClass::where('title', 'like', '%Standard%')->get();

Delete Tax Class ​

php
$taxClass = FluentCart\App\Models\TaxClass::find(1);
$taxClass->delete();

Get Tax Classes Ordered by Title ​

php
$orderedClasses = FluentCart\App\Models\TaxClass::orderBy('title', 'asc')->get();

Automatic Slug Generation ​

php
// Creating a class with a duplicate title auto-generates a unique slug
$taxClass1 = FluentCart\App\Models\TaxClass::create(['title' => 'Sales Tax']);
// slug: "sales-tax"

$taxClass2 = FluentCart\App\Models\TaxClass::create(['title' => 'Sales Tax']);
// slug: "sales-tax-2"

FluentCart developer documentation