Eloquent meta provides an easy way to implement schemaless meta data stores for Eloquent
models., (*1)
, (*2)
Installation
Add the package via composer:, (*3)
composer require boxed-code/laravel-eloquent-meta
then add the following
line to the providers
key within your config/app.php
file:, (*4)
BoxedCode\Eloquent\Meta\MetaServiceProvider::class
You can then create a meta table migration using the artisan command:, (*5)
php artisan make:meta-migration
and then call migrate, (*6)
php artisan migrate
Basic Usage
There are two main methods of enabling a meta store on your models:, (*7)
The Metable
trait adds the basic meta store relation to your model so that it can be accessed like:, (*8)
class MyModel extends Model
{
use Metable;
}
...
$model = new MyModel();
// Access via magic accessors on the meta collection.
$model->meta->foo = 'bar';
echo $model->meta->foo; // prints 'bar'
// Access via the collection
$item = $model->meta->whereKey('foo')->first();
echo $item; // prints 'bar'
The FluentMeta
trait enables meta access on the model directly like:, (*9)
use BoxedCode\Eloquent\Meta\FluentMeta;
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
{
use FluentMeta;
}
...
$model = new MyModel();
// Access via magic accessors on the model.
$model->foo = 'bar';
echo $model->foo; // prints 'bar'
// Access via the collection
$item = $model->meta->whereKey('foo')->first();
echo $item; // prints 'bar'
License
See the attached license file., (*10)