How to Add Custom Attributes in Laravel Model?

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!

Previous Article

Best Magento 2 Product Designer Extensions in 2024

Next Article

Configuration of VAT ID Validation in Magento 2

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *

Get Connect With Us

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨