danielebarbaro / laravel-entity-details
此包提供用户实体常见的字段列表
v1.0.1
2022-03-16 16:57 UTC
Requires
- php: ^8.0|^8.1
- illuminate/contracts: ^8.73|^9.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.3
- nunomaduro/collision: ^5.10|^6.0
- nunomaduro/larastan: ^1.0|^2.0.1
- orchestra/testbench: ^6.22|^7.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
This package is not auto-updated.
Last update: 2024-09-26 05:24:45 UTC
README
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 EntityDetail 和 EntityDetailHydrate
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)。有关更多信息,请参阅 许可文件。