Extending Meta
Here are some mechanisms provided to customize the behaviour of this package.
Adjusting Schema
If you wish to modify the database schema of the package, it is recommended that you copy the base migration files provided by this package into your application’s database/migration folder. If the file names match exactly, the ones provided by this package will be ignored.
If the customization that you are applying would cause conflicts with future migrations (e.g. changing table name), then it is recommended to set the metable.applyMigrations
config to false
, which will disable future migrations from being run. Do note that you may need to apply migrations provided in future major versions of the package manually to avoid conflicts.
Adjusting the Model
You can modify the Meta model by simply extending the class.
If you wish to use the same custom Meta
subclass for all Metable
models, you can register the fully-qualified class name to the metable.model
config.
If you would prefer to use different Meta
subclasses for different entities (e.g. to keep data in separate tables), you can override the Metable::getMetaClassName()
method of each model to specify the desired Meta
class to use for each entity.
<?php
class UserMeta extends Meta
{
protected $table = 'user_meta';
}
class ProductMeta extends Meta
{
protected $table = 'product_meta';
}
class User extends Model
{
use Metable;
protected function getMetaClassName(): string
{
return UserMeta::class;
}
}
class Product extends Model
{
use Metable;
protected function getMetaClassName(): string
{
return ProductMeta::class;
}
}