How To

How to Add Custom Attributes in Laravel Model?

Hello Laravel Friends,

In this blog, we are learning how to add a custom attribute in the Laravel model. In this blog, we are going through the example of custom attributes.

What are the Use Cases of Custom Attributes in Laravel?

When we need,

  • some extra information / some calculation logic in the model
  • we need to process the model data
  • get relational data with the model object

In all the above cases, we can use a custom attribute in Laravel.

Let’s take one example of it.

Example of Custom Attribute in Laravel

Here we have one fresh Laravel project. Also, we have a User model with first_name, last_name, email, and password. Here we need to display the user’s full name in our view. So need to create a custom attribute for it. We are creating the full_name attribute in the User model.

Now, your app/Models/User.php file looks like the below.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array<int, string>
     */    protected $fillable = [
        'first_name',
        'last_name',
        'email',
        'password',
    ];

    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array<int, string>
     */    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * The attributes that should be cast.
     *
     * @var array<string, string>
     */    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

// your custom attribute 
    public function getFullNameAttribute()
    {
        return $this->first_name . ' ' . $this->last_name;
    }
}

To access your custom attribute using the model object.

return User::find(1)->full_name;

Output: 

Magecomp Laravel

Suppose you need a full_name attribute with a User model object. You can achieve that using the $appends property of the model class. Please add the following code to your User model.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    …

    /**
     * The accessors to append to the model's array form.
     *
     * @var array
     */    protected $appends = [
        'full_name'
    ];

    public function getFullNameAttribute()
    {
        return $this->first_name . ' ' . $this->last_name;
    }
}

Now access your custom attribute using the User model object.

return User::find(1);

Output:

{
    first_name: 'Magecomp',
    Last_name:  'Laravel',
    email : 'johndoe@gmail.com',
    email_verified_at : null,
    created_at: '2023-02-15 06:10:20',
    updated_at:  '2023-02-15 06:10:20',
    full_name: 'Magecomp Laravel'
}

Conclusion:

Hence, using the above method, you can easily Add a Custom Attribute in Laravel Model. For any doubts or queries, freely leave a comment, and I will be prompt to answer them. For any customization requirements of your Laravel project, Hire Laravel Developer. Share the tutorial with your other Laravel friends, and stay in touch with us to learn more about Laravel.

Happy Coding!

Click to rate this post!
[Total: 9 Average: 4]
Bharat Desai

Bharat Desai is a Co-Founder at MageComp. He is an Adobe Magento Certified Frontend Developer ? with having 8+ Years of experience and has developed 150+ Magento 2 Products with MageComp. He has an unquenchable thirst to learn new things. On off days you can find him playing the game of Chess ♟️ or Cricket ?.

Recent Posts

Improving Error Handling and Transition Management in Remix with useRouteError and useViewTransitionState

In modern web development, seamless navigation and state management are crucial for delivering a smooth…

6 days ago

Magento Open Source 2.4.8-Beta Release Notes

Magento Open Source 2.4.8 beta version released on October  8, 2024. The latest release of…

1 week ago

How to Create Catalog Price Rule in Magento 2 Programmatically?

Hello Magento Friends, Creating catalog price rules programmatically in Magento 2 can be a valuable…

1 week ago

Top 10 Tips to Hire Shopify Developers

As the world of eCommerce continues to thrive, Shopify has become one of the most…

2 weeks ago

Managing Browser Events and Navigation in Shopify Remix: useBeforeUnload, useHref, and useLocation Hooks

Shopify Remix is an innovative framework that provides a streamlined experience for building fast, dynamic,…

2 weeks ago

Ultimate Guide to Hiring a Top Shopify Development Agency

Building a successful eCommerce store requires expertise, and for many businesses, Shopify has become the…

2 weeks ago