danielebarbaro / laravel-entity-details
This package provide a list of common fields for a User entity
Fund package maintenance!
danielebarbaro
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-11-21 06:03:55 UTC
README
laravel-entity-details is a package to create and attach some details to a generic Model in a blink of an eye 😎
Installation
You can install the package via composer:
composer require danielebarbaro/laravel-entity-details
You can publish and run the migrations with:
php artisan vendor:publish --tag="entity-details-migrations"
php artisan migrate
You can publish the config file with:
php artisan vendor:publish --tag="entity-details-config"
This is the contents of the published config file:
return [ 'table_name' => env('ENTITYDETAIL_TABLE_NAME', 'entity_details'), 'returns_soft_deleted_models' => env('ENTITYDETAIL_SOFTDETED_ENABLE', false), ];
Usage
Add the traits EntityDetail
and EntityDetailHydrate
in your related Model:
class User extends Authenticatable { [...] use EntityDetail, EntityDetailHydrate; [...] } [...] class Biker extends Model { [...] use EntityDetail, EntityDetailHydrate; [...] } [...] class Company extends Model { [...] use EntityDetail, EntityDetailHydrate; [...] }
In your Controller
you can simply save or update detail with the method 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; [...]
or
[...] $company = Company::with('detail')->first(); $company->syncDetail([ 'is_company' => true, 'status' => 1, 'code' => 'CODE', 'name' => 'DUMMY COMPANY', ]); $detail = $company->detail; [...]
Relations
Traits help you to walk into relations:
$detail = Detail::with('owner')->get(); $user = $detail->owner; [...] $biker = Biker::with('detail')->first(); $detail = $biker->detail; [...]
Scopes
Traits help you to use company and owner scope:
$details = Detail::where('status', 1)->isCompany()->get(); [...] $user = User::where('email', 'john@doe.com')->first(); $detail = Detail::forOwner($user)->first(); [...]
Rules
Basic rules are:
$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', ];
You can overwrite the $rules
as you wish in your model, the validator will do the rest
Migration
Feel free to add or delete fields for Detail entity but remember to edit also the $rules
.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
Thanks a lot to Spatie ❤️ for making my life easier
License
The MIT License (MIT). Please see License File for more information.