Understanding Laravel: Differences Between Mutators, Accessors, and Cast

Adrian Generous
5 min readFeb 23, 2024

Laravel, with its elegant approach to programming, offers powerful tools for manipulating model data. Today, we will focus on three key mechanisms: Mutators, Accessors, and Cast. We’ll start from the basics, go through detailed examples, and finish with the novelties introduced in Laravel 11.

Accessors (Accessors)

Purpose: Accessors allow you to modify the value of an attribute after it is retrieved from the database, before it is returned to the user. This is the perfect tool when we want to format the data in a specific way for the recipient, for example, change the date format or add a full path to the image file name.

How it works: We create a function in the model with the prefix get, the name of the attribute with the first letter capitalized, and the suffix Attribute. For example, to create an accessor for the name attribute, I define the function getNameAttribute().

Example:

class Product extends Model
{
// Accessor Example
public function getNameAttribute($value)
{
return strtoupper($value);
}
}

Practical use: Assume that I have a product named “laptop” in the database. When I fetch this product and refer to its name ($product->name), thanks to the…

--

--

Adrian Generous

I navigate between coding & marketing, experienced as a CTO, project manager, & ad agency owner. I share Laravel & more on Medium, also a history enthusiast.