Laravel Tutorials

String Manipulation Made Easy with Laravel's AsStringable Cast

Published
String Manipulation Made Easy with Laravel's AsStringable Cast image

Laravel's AsStringable cast transforms model attributes into Stringable objects, providing fluent access to Laravel's powerful string manipulation methods directly from your model attributes.

When working with text in your Laravel models, you often need to perform various string operations like formatting, cleaning, or transforming the text. While you could do this manually each time, Laravel's AsStringable cast transforms your model's string attributes into powerful Stringable objects, giving you access to dozens of built-in string manipulation methods.

This cast is particularly useful when you consistently need to perform string operations on specific model attributes. Instead of writing the same string manipulation code repeatedly, you can access these operations directly on your model attributes as if they were Stringable objects.

use Illuminate\Database\Eloquent\Casts\AsStringable;
 
class Post extends Model
{
protected $casts = [
'title' => AsStringable::class,
'content' => AsStringable::class,
];
}

Let's explore a practical example of a blog system with SEO-friendly content handling:

<?php
 
namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\AsStringable;
 
class Article extends Model
{
protected $casts = [
'title' => AsStringable::class,
'content' => AsStringable::class,
'meta_description' => AsStringable::class
];
 
public function getSlugAttribute()
{
return $this->title
->lower()
->replaceMatches('/[^a-z0-9\s]/', '')
->replace(' ', '-')
->limit(60, '');
}
 
public function getSeoTitleAttribute()
{
return $this->title
->title()
->limit(60, '...')
->append(' | My Blog');
}
 
public function getExcerptAttribute()
{
return $this->content
->stripTags()
->words(50, '...')
->title();
}
 
public function getReadingTimeAttribute()
{
return $this->content
->stripTags()
->wordCount() / 200;
}
}

The AsStringable cast simplifies string manipulation by providing a fluent interface for common text operations, making your code more readable and maintainable.

Harris Raftopoulos photo

Senior Software Engineer • Staff & Educator @ Laravel News • Co-organizer @ Laravel Greece Meetup

Sponsored

tinkerwell logo
Tinkerwell

Enjoy coding and debugging in an editor designed for fast feedback and quick iterations. It's like a shell for your application – but with multi-line editing, code completion, and more.

Visit Tinkerwell

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article