Skip to content

zablockibros/laravel-immutable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Immutable Attributes

Make attributes on your Laravel models immutable...i.e. after the model is created, the value of the immutable attributes cannot change when updating records with Eloquent.

Installation

Requirements: This package requires PHP 7.1.3 or higher and Laravel 5.7

$ composer require zablockibros/laravel-immutable

The package will automatically register its service provider.

Define Immutable Attributes

Define the attributes to be immutable on your model:

<?php
 
namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
use ZablockiBros\Immutable\Traits\HasImmutableAttributes;
 
class YourModel extends Model
{
    use HasImmutableAttributes;
    
    /**
     * @var array
     */
    protected $immutable = [
        'name',
        'sku',
    ];

In this example, name and sku can be set on model creation, however, the attributes will not persist changes of their value to a database on update.

$model = new YourModel;
 
// set the attribute 
$model->name = 'test';
$model->name; // 'test'
 
// change it (pre-saving)
$model->name = 'changed';
$model->name; // 'changed'
 
// now we save the model
$model->save();
 
// can't change its value now
$model->name = 'nope';
$model->name; // 'changed'
 
// can't update it either
$model->save([
    'name' => 'nope',
]);
$model->name; // 'changed'

Copyright and License

MIT License.

Copyright (c) 2019 Justin Zablocki

About

Immutable attributes for your Eloquent models

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages