cleaniquecoders / profile
Common Profile Information
Fund package maintenance!
cleaniquecoders
Installs: 3 010
Dependents: 5
Suggesters: 0
Security: 0
Stars: 14
Watchers: 0
Forks: 3
Open Issues: 0
pkg:composer/cleaniquecoders/profile
Requires
- php: ^8.3 | ^8.4
- cleaniquecoders/traitify: ^1.0
- illuminate/auth: ^11.0 | ^12.0
- illuminate/support: ^11.0 | ^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.6
- orchestra/testbench: ^9.5
- pestphp/pest: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/phpstan-phpunit: ^1.2
- dev-master
- 6.1.0
- v6.0.1
- v6.0.0
- v5.0.0
- v4.1.1
- 4.1.0
- 4.0.0
- v3.1.3
- v3.1.2
- 3.1.1
- 3.1.0
- v3.0.0
- v2.0.0
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-dependabot/github_actions/stefanzweifel/git-auto-commit-action-7
- dev-dependabot/github_actions/actions/checkout-5
- dev-dependabot/github_actions/dependabot/fetch-metadata-2.4.0
- dev-feature/refactor
This package is auto-updated.
Last update: 2025-11-16 02:57:06 UTC
README
A Laravel package for managing profile information (addresses, emails, phone numbers, websites, and bank accounts) using polymorphic relationships.
Features
- Polymorphic Design - Reusable profile tables for any model
- Trait-Based - Use only what you need (addresses, emails, phones, websites, bank accounts)
- Type-Safe - Query scopes for phone types and other filters
- Configurable - Customize models and polymorphic type names
- UUID Support - Unique identifiers for external integrations
- Soft Deletes - Maintain audit trail of changes
Requirements
- PHP ^8.3 | ^8.4
- Laravel ^11.0 | ^12.0
Quick Start
Installation
composer require cleaniquecoders/profile php artisan vendor:publish --tag=profile-migrations php artisan migrate php artisan profile:seed
Basic Usage
Add the HasProfile trait to your model:
use CleaniqueCoders\Profile\Concerns\HasProfile; use Illuminate\Database\Eloquent\Model; class User extends Model { use HasProfile; }
Create profile information:
use CleaniqueCoders\Profile\Models\PhoneType; // Create address $user->addresses()->create([ 'primary' => '123 Main Street', 'city' => 'Kuala Lumpur', 'postcode' => '50088', 'country_id' => 1, ]); // Create phone numbers $user->phones()->create([ 'phone_number' => '+60123456789', 'phone_type_id' => PhoneType::MOBILE, 'is_default' => true, ]); // Create email $user->emails()->create([ 'email' => 'john@example.com', 'is_default' => true, ]); // Create website $user->websites()->create([ 'url' => 'https://example.com', 'is_default' => true, ]);
Query profile information:
// Get all addresses $addresses = $user->addresses; // Get mobile phones only $mobilePhones = $user->phones()->mobile()->get(); // Get default email $email = $user->emails()->where('is_default', true)->first();
Available Traits
| Trait | Purpose |
|---|---|
HasProfile |
Includes Addressable, Emailable, Phoneable, Websiteable |
Addressable |
Manage physical addresses |
Emailable |
Manage email addresses |
Phoneable |
Manage phone numbers (with types: home, mobile, office, fax, other) |
Websiteable |
Manage website URLs |
Bankable |
Manage bank account information |
Use individual traits for specific needs:
use CleaniqueCoders\Profile\Concerns\Addressable; use CleaniqueCoders\Profile\Concerns\Phoneable; class Company extends Model { use Addressable, Phoneable; }
Documentation
📚 Complete Documentation - Comprehensive guides and API reference
Quick Links
- Installation Guide
- Configuration
- Quick Start Examples
- Architecture Overview
- Usage Guides
- API Reference
- Best Practices
Use Cases
Corporate Profiles
class Company extends Model { use HasProfile, Bankable; } // Headquarters address $company->addresses()->create([...]); // Contact information $company->phones()->create(['phone_type_id' => PhoneType::OFFICE, ...]); $company->emails()->create(['email' => 'info@company.com', ...]); $company->websites()->create(['url' => 'https://company.com', ...]); // Banking details $company->banks()->create([...]);
Employee Management
class Employee extends Model { use HasProfile, Bankable; } // Home address for shipping $employee->addresses()->create([...]); // Multiple contact numbers $employee->phones()->create(['phone_type_id' => PhoneType::MOBILE, ...]); $employee->phones()->create(['phone_type_id' => PhoneType::HOME, ...]); // Payroll bank account $employee->banks()->create([...]);
Customer Records
class Customer extends Model { use HasProfile; } // Billing and shipping addresses $customer->addresses()->create(['type' => 'billing', ...]); $customer->addresses()->create(['type' => 'shipping', ...]); // Multiple contact methods $customer->emails()->create([...]); $customer->phones()->mobile()->create([...]);
Testing
composer test
Contributing
Contributions are welcome! Please see our contribution guidelines for details.
License
This package is open-sourced software licensed under the MIT license.