How to make a Trait in Laravel

laravel, laravel-5

Solution

Well, laravel follows `PSR-4` so you should place your traits in:

`app/Traits`

You then need to make sure you namespace your trait with that path, so place:

namespace App\Traits;

At the top of your `trait`

Then make sure when you save the file, the file name matches the trait name. So, if your trait is called `FormatDates` you need to save the file as `FormatDates.php`

Then 'use' it in your User model by adding:

use App\Traits\FormatDates;

at the top of your model, but below your `namespace`

and then add:

use FormatDates;

just inside the class, so for your User model, assuming you are using the laravel default, you would get:

use App\Traits\FormatDates;

class User extends Authenticatable
{
    use Notifiable, FormatDates;

...
}

And remember to dump the autoloader:

`composer dump-autoload`

Problem

Where to make the file if i want to use this trait on my Models How should this file look like if i want to have this trait inside: ``` trait FormatDates { protected $newDateFormat = 'd.m.Y H:i'; // save the date in UTC format in DB table public function setCreatedAtAttribute($date){ $this->attributes['created_at'] = Carbon::parse($date); } // convert the UTC format to my format public function getCreatedAtAttribute($date){ return Carbon::parse($date)->format($this->newDateFormat); } // save the date in UTC format in DB table public function setUpdatedAtAttribute($date){ $this->attributes['updated_at'] = Carbon::parse($date); } // convert the UTC format to my format public function getUpdatedAtAttribute($date){ return Carbon::parse($date)->format($this->newDateFormat); } // save the date in UTC format in DB table public function setDeletedAtAttribute($date){ $this->attributes['deleted_at'] = Carbon::parse($date); } // convert the UTC format to my format public function getDeletedAtAttribute($date){ return Carbon::parse($date)->format($this->newDateFormat); } } ``` And how to apply it for example on a User Model class...

Original source