latevaweb/laravel-custom-properties
Laravel Custom Properties
Trait to add dynamic custom properties to Eloquent models
Once the trait is installed on the model and migration field is added you can do these things:
$customer = new Customer; // An Eloquent model
$customer
->setCustomProperty('foo', 'bar')
->setCustomProperty('foo2', 'bar2')
->save();
$customer->hasCustomProperty('foo'); // Returns 'true'
$customer->getCustomProperty('foo'); // returns 'bar'
$customer->forgetCustomProperty('foo'); // removes field 'foo' from model array
// Don't forget to persist it!
$customer->save();
Installation
You can install the package via composer:
composer require latevaweb/laravel-custom-properties
Adding custom properties to a Model
The required steps to add custom properties to a model are:
- First, you need to add the
LaTevaWeb\CustomProperties\HasCustomProperties-trait. - It is required to add to your model table the field
$table->json('custom_properties')->nullable();
Here's an example of a prepared model:
use Illuminate\Database\Eloquent\Model;
use LaTevaWeb\CustomProperties\HasCustomProperties;
class NewsItem extends Model
{
use HasCustomProperties;
}
And the migration:
Schema::table('your_table', function (Blueprint $table) {
$table->json('custom_properties')->nullable();
});
Related Packages
joskolenberg/eloquent-reflector
Laravel package for inspecting model classes on relations en attributes.
16,730
2
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| 1.0.3 | ^7.3| | ^6.0| | MIT | |
| 1.0.2 | ^7.3 | ^6.0| | MIT | |
| 1.0.1 | ^7.3 | ^6.0| | MIT | |
| 1.0.0 | ^7.3 | ^6.0 | MIT |


