hbliang/laravel-attributes-replication

dev-main 2023-01-26 20:22 UTC

This package is auto-updated.

Last update: 2024-09-27 00:13:18 UTC


README

安装

composer require hbliang/laravel-attributes-replication

配置

php artisan vendor:publish --provider="Hbliang\AttributesReplication\ReplicationServiceProvider"

使用方法

公司

id - integer
name - string

用户

id - integer
company_id - integer
company- string
use Hbliang\AttributesReplication\Contracts\AttributesReplicatable;
use Hbliang\AttributesReplication\Traits\HasAttributesReplication;
use Illuminate\Database\Eloquent\Model;

class Company extends Model implements AttributesReplicatable
{
    use HasAttributesReplication;
    protected $fillable = ['name'];

    public static function registerAttributesReplication()
    {
        self::addAttributesReplication()
            ->map([
                'name' => 'company_name',
            ])
            // or use extra
            // ->extra(function(Company $company) {
            //     return [
            //         'company_name' => $company->name,
            //     ];
            // })
            ->relation('users')
            ->event('saved');
    }

    public function users()
    {
        return $this->hasMany(User::class);
    }
}

class User extends Model implements AttributesReplicatable
{
    use HasAttributesReplication;
    protected $fillable = ['company_name'];

    public static function registerAttributesReplication()
    {
        self::addAttributesReplication()
            ->passive()
            ->map([
                'name' => 'company_name',
            ])
            ->relation('company')
            ->event('created');
    }

    public function company()
    {
        return $this->hasMany(Company::class);
    }
}