cleaniquecoders/profile

常见配置信息

v5.0.0 2024-03-21 03:35 UTC

README

Profile是一个使用多态方法存储基本信息的包 - 地址、电话号码、电子邮件和网站。

Latest Stable Version Total Downloads Scrutinizer Code Quality License

安装

  1. 为了在Laravel项目中安装Profile
$ composer require cleaniquecoders/profile
  1. 然后在你的config/app.php中将以下内容添加到providers键中
\CleaniqueCoders\Profile\ProfileServiceProvider::class,

发布工厂文件

$ php artisan vendor:publish --tag=profile-factories

发布迁移文件

$ php artisan vendor:publish --tag=profile-migrations

发布种子文件

$ php artisan vendor:publish --tag=profile-seeds

然后运行

$ php artisan migrate

然后使用以下命令填充国家和电话类型数据

$ php artisan profile:seed

配置

现在你可以配置自己的模型和类型名称。请参阅config/profile.php

你可以在config/profile.php中定义自己的profile:seed种子器。

可用的多态特性

使用案例

  1. 一家公司有地址、电话号码、电子邮件和网站。
  2. 一名员工有地址、电话号码、电子邮件和网站。

这使我们使用多态来解决存储数据相似性的问题。

设置

可用的多态特性

  1. CleaniqueCoders\Profile\Traits\Morphs\Addressable
  2. CleaniqueCoders\Profile\Traits\Morphs\Emailable
  3. CleaniqueCoders\Profile\Traits\Morphs\Phoneable
  4. CleaniqueCoders\Profile\Traits\Morphs\Websiteable
  5. CleaniqueCoders\Profile\Traits\Morphs\Bankable

对于实体的最常见设置是使用HasProfile特性。

HasProfile特性包含

  1. CleaniqueCoders\Profile\Traits\Morphs\Addressable
  2. CleaniqueCoders\Profile\Traits\Morphs\Emailable
  3. CleaniqueCoders\Profile\Traits\Morphs\Phoneable
  4. CleaniqueCoders\Profile\Traits\Morphs\Websiteable
namespace App;

use CleaniqueCoders\Profile\Traits\HasProfile;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
	use HasProfile;
}

使用方法

为每个配置创建记录

$user->addresses()->create([
	'primary' => '9 miles, Sungei Way',
	'secondary' => 'P.O.Box 6503, Seri Setia',
	'city' => 'Petaling Jaya',
	'postcode' => '46150',
	'state' => 'Selangor',
	'country_id' => config('profile.providers.country.model')::name('Malaysia')->first()->id
]);
$user->phones()->create([
    'phone_number'  => '+6089259167',
    'is_default'    => true,
    'phone_type_id' => PhoneType::HOME,
]);
$user->phones()->create([
    'phone_number'  => '+60191234567',
    'is_default'    => true,
    'phone_type_id' => PhoneType::MOBILE,
]);
$user->phones()->create([
    'phone_number'  => '+60380001000',
    'is_default'    => true,
    'phone_type_id' => PhoneType::OFFICE,
]);
$user->phones()->create([
    'phone_number'  => '+60380001000',
    'is_default'    => true,
    'phone_type_id' => PhoneType::OTHER,
]);
$user->phones()->create([
    'phone_number'  => '+60380001001',
    'is_default'    => true,
    'phone_type_id' => PhoneType::FAX,
]);

// you can futher query using local scopes in phone models.
// get the first home phone number
$user->phones()->home()->first();
// get all the mobile phone numbers
$user->phones()->mobile()->get();
$user->emails()->create([...]);
$user->websites()->create([...]);
$user->bankable()->create([...]);

获取所有记录

$user->addresses;
$user->emails;
$user->phones;
$user->websites;
$user->banks;

许可证

本软件包是开源软件,许可协议为MIT许可