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

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Mock PHP Classes in Tests With the Double Library image

Mock PHP Classes in Tests With the Double Library

Read article
Laravel Discount: Coupon Codes, Usage Limits, and Stacking image

Laravel Discount: Coupon Codes, Usage Limits, and Stacking

Read article
Laravel Truss: Live Interactive Database ER Diagrams image

Laravel Truss: Live Interactive Database ER Diagrams

Read article
Laravel artisan dev: Run Server, Queue, Logs, and Vite image

Laravel artisan dev: Run Server, Queue, Logs, and Vite

Read article
Validate and Convert HEIC Images in Laravel image

Validate and Convert HEIC Images in Laravel

Read article
Saga Lara Flow: Durable Workflows and Compensating Transactions on Laravel Queues image

Saga Lara Flow: Durable Workflows and Compensating Transactions on Laravel Queues

Read article