danielebarbaro/laravel-entity-details

此包提供用户实体常见的字段列表

v1.0.1 2022-03-16 16:57 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

laravel-entity-details 是一个包,可以瞬间创建并附加一些详细信息到通用模型 😎

安装

您可以通过 composer 安装此包

composer require danielebarbaro/laravel-entity-details

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --tag="entity-details-migrations"
php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="entity-details-config"

这是已发布配置文件的内容

return [
    'table_name' => env('ENTITYDETAIL_TABLE_NAME', 'entity_details'),
    'returns_soft_deleted_models' => env('ENTITYDETAIL_SOFTDETED_ENABLE', false),
];

用法

在您的相关模型中添加 traits EntityDetailEntityDetailHydrate

class User extends Authenticatable
{
    [...]
    use EntityDetail, EntityDetailHydrate;
    [...]
}

[...]

class Biker extends Model
{
    [...]
    use EntityDetail, EntityDetailHydrate;
    [...]
}

[...]

class Company extends Model
{
    [...]
    use EntityDetail, EntityDetailHydrate;
    [...]
}

在您的 Controller 中,您可以使用方法 syncDetail($detail) 简单地保存或更新详细信息

    [...]
    $user = User::create([
        'name' => 'John',
        'email' => 'Doe',
        'password' => Hash::make('password')
    ]);
    
    $user->syncDetail([
        'is_company' => true,
        'status' => 1,
        'code' => 'CODE',
        'name' => 'DUMMY COMPANY',
    ]);
    
    $user->fresh('detail');

    $detail = $user->detail;
    [...]

    [...]
    $company = Company::with('detail')->first();
    
    $company->syncDetail([
        'is_company' => true,
        'status' => 1,
        'code' => 'CODE',
        'name' => 'DUMMY COMPANY',
    ]);

    $detail = $company->detail;
    [...]

关系

特质可以帮助您进入关系

    $detail = Detail::with('owner')->get();
    $user = $detail->owner;

    [...]

    $biker = Biker::with('detail')->first();
    $detail = $biker->detail;
    [...]

作用域

特质可以帮助您使用公司和所有者作用域

    $details = Detail::where('status', 1)->isCompany()->get();
    [...]
    
    $user = User::where('email', 'john@doe.com')->first();
    $detail = Detail::forOwner($user)->first();
    [...]

规则

基本规则如下

$rules = [
    'is_company' => 'required|boolean',
    'status' => 'required|max:20',
    'code' => 'required|max:10',
    'name' => 'string|max:100',
    'secondary_email' => 'email',
    'sdi' => 'max:7',
    'pec' => 'email',
    'first_name' => 'string|max:60',
    'last_name' => 'string|max:60',
    'phone' => 'string|max:60',
    'mobile' => 'string|max:60',
    'fiscal_code' => 'string|max:16',
    'vat' => 'string|max:13',
    'postal_code' => 'string|max:6',
    'city' => 'string|max:30',
    'country' => 'string|max:2',
    'address' => 'string|max:100',
    'notes' => 'string',
];

您可以在模型中根据需要覆盖 $rules,验证器将完成其余操作

迁移

您可以为详细信息实体添加或删除字段,但请记住也要编辑 $rules

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请查看 我们的安全策略 了解如何报告安全漏洞。

致谢

非常感谢 Spatie ❤️ 让我的生活变得更简单

许可

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