hbliang / laravel-attributes-replication
Laravel 属性复制
dev-main
2023-01-26 20:22 UTC
Requires
- php: >=7.0
- illuminate/contracts: ^6.0|^7.0|^8.0
- illuminate/database: ^6.0|^7.0|^8.0
- illuminate/support: ^6.0|^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^4.0|^5.0|^6.0
- phpunit/phpunit: ^8.0 || ^9.0
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); } }