michielkempen/laravel-morphable

1.2.0 2021-03-31 10:06 UTC

This package is auto-updated.

Last update: 2024-08-29 04:49:11 UTC


README

一个特性,可以将Eloquent模型根据类型字段转换为子类。

安装

将此包添加到应用程序的依赖中

composer require michielkempen/laravel-morphable

使用方法

Morphable 特性添加到您的模型中,并添加 factorytypeField 属性。typeField 属性是可选的,默认为 typefactory 属性是必须的,需要包含继承自 MorphableModelFactory 接口类的路径。

<?php

use Illuminate\Database\Eloquent\Model;
use MichielKempen\LaravelMorphable\Morphable;
use App\UserModelFactory;

class User extends Model
{
    use Morphable;
    
    public $factory = UserModelFactory::class;
    
    public $typeField = 'role';
}
<?php

use Illuminate\Database\Eloquent\Model;
use \MichielKempen\LaravelMorphable\MorphableModelFactory;

class UserModelFactory implements MorphableModelFactory
{
    public static function create(string $type): Model
    {
        if($type == 'admin') {
            return app(Manager::class);
        }   
    
        return app(Customer::class);
    }
}
<?php

class Manager extends User
{
    // manager specific methods
}
<?php

class Customer extends User
{
    // customer specific methods
}

安全

如果您发现任何安全相关的问题,请通过电子邮件 kempenmichiel@gmail.com 向我们报告,而不是使用问题跟踪器。

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件