FleetCart/Modules/Meta/Eloquent/HasMetaData.php

42 lines
886 B
PHP
Raw Normal View History

2023-06-11 12:14:03 +00:00
<?php
namespace Modules\Meta\Eloquent;
use Modules\Meta\Entities\MetaData;
trait HasMetaData
{
/**
* The "booting" method of the trait.
*
* @return void
*/
public static function bootHasMetaData()
{
static::saved(function ($entity) {
$entity->saveMetaData(request('meta', []));
});
}
/**
* Get the meta for the entity.
*
* @return \Illuminate\Database\Eloquent\Relations\MorphToMany
*/
public function meta()
{
return $this->morphOne(MetaData::class, 'entity')->withDefault();
}
/**
* Save meta data for the entity.
*
* @param array $data
* @return \Illuminate\Database\Eloquent\Model
*/
public function saveMetaData($data = [])
{
$this->meta->fill([locale() => $data])->save();
}
}