maggomann/addressable

此Laravel包提供了一个最小化的特性Addressable,用于通过这些地址添加eloquent模型。

v0.2.2 2023-05-20 20:26 UTC

README

GitHub Tests Action Status Total Downloads

addressable

此包提供了一个最小化的特性Addressable,用于通过这些地址为laravel添加eloquent模型。该包将在以后扩展。在我开始使用这个在不同项目中修改过的类之前,它被直接作为一个包外包出。

安装

您可以通过composer安装此包

composer require maggomann/addressable

您可以使用以下命令安装任何东西

php artisan addressable:install
php artisan migrate

或者

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

php artisan vendor:publish --tag="addressable-migrations"
php artisan migrate

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

php artisan vendor:publish --tag="addressable-config"

可选地,您可以使用以下命令发布翻译文件

php artisan vendor:publish --tag="addressable-translations"

如何使用它?

use Illuminate\Database\Eloquent\Model;
use Maggomann\Addressable\Traits\Addressable;

class Player extends Models
{
    use Addressable;
}

//...
//...

$exampleAttributes = [
    'first_name' => 'first name',
    'last_name' => 'last name',
    'name' => 'name',
    'street_address' => 'street address',
    'street_addition' => 'street addition',
    'postal_code' => 'postal code',
    'city' => 'city',
    'country_code' => 'de',
    'state' => null,
    'company' => null,
    'job_title' => null,
    'is_preferred' => true,
    'is_main' => true,
];

$address = new Address();
$address->fill($exampleAttributes);
$address->withCategory($categoryIdOrCategoryClass);
$address->withGender($genderIdOrGenderClass);

Player::query()
    ->findOrFail(1)
    ->address()
    ->save($address);
use Illuminate\Database\Eloquent\Model;
use Maggomann\Addressable\Traits\Addressable;

class Player extends Models
{
    use Addressable;
}

//...
//...

$exampleAttributes = [
    'first_name' => 'first name',
    'last_name' => 'last name',
    'name' => 'name',
    'street_address' => 'street address',
    'street_addition' => 'street addition',
    'postal_code' => 'postal code',
    'city' => 'city',
    'country_code' => 'de',
    'state' => null,
    'company' => null,
    'job_title' => null,
    'is_preferred' => true,
    'is_main' => true,
];

$addressOne = new Address();
$addressOne->fill($exampleAttributes);
$addressOne->withCategory($categoryIdOrCategoryClass);
$addressOne->withGender($genderIdOrGenderClass);

$addressTwo = new Address();
$addressTwo->fill($exampleAttributes);
$addressTwo->withCategory($categoryIdOrCategoryClass);
$addressTwo->withGender($genderIdOrGenderClass);

$player = Player::query()->findOrFail(1);

$player->addresses()->save($addressOne);
$player->addresses()->save($addressTwo);

// or

$player->addresses()->saveMany(
    collect([
        $addressOne,
        $addressTwo,
    ])
);
use Illuminate\Database\Eloquent\Model;
use Maggomann\Addressable\Domain\Actions\UpdateOrCreateAddressAction;
use Maggomann\Addressable\Traits\Addressable;

class Player extends Models
{
    use Addressable;
}

//...
//...

$exampleAttributes = [
    'first_name' => 'first name',
    'last_name' => 'last name',
    'name' => 'name',
    'street_address' => 'street address',
    'street_addition' => 'street addition',
    'postal_code' => 'postal code',
    'city' => 'city',
    'country_code' => 'de',
    'state' => null,
    'company' => null,
    'job_title' => null,
    'is_preferred' => true,
    'is_main' => true,
];

$newAddress = app(UpdateOrCreateAddressAction::class)->execute(
    $player,
    AddressData::from($exampleAttributes)
);

// or

$updatedAddress = app(UpdateOrCreateAddressAction::class)->execute(
    $player,
    AddressData::from($exampleAttributes)
    $player->addresses()->first()
);

地址表目前包含以下属性

    'attributes' => [
        'addresses' => [
            'category_id' => 'address type',
            'gender_id' => 'salutation',
            'first_name' => 'first name',
            'last_name' => 'last name',
            'name' => 'first_name', 'last_name' => 'last_name',
            'street_address' => 'streets and no.',
            'street_addition' => 'street addition',
            'postal_code' => 'postal code',
            'city' => 'city',
            'country_code' => 'country',
            'state' => 'federal state',
            'company' => 'company',
            'job_title' => 'job title',
            'is_preferred' => 'prefer',
            'is_main' => 'is main address',
            'latitude' => 'latitude',
            'longitude' => 'longitude',
        ],
    ],

预装问候语

默认情况下,它们位于以下表中:address_genders

    'address_genders' => [
        'title' => [
            'male' => 'Mr.',
            'female' => 'Ms.',
            'diverse' => 'Various',
        ],
    ],

预装分类

默认情况下,它们位于以下表中:address_categories

    'address_categories' => [
        'title' => [
            'standard' => 'Default address',
            'billing' => 'Billing addres',
            'shipping' => 'Delivery address',
        ],
    ],

测试

composer test
composer test:pest-coverage

更新日志

请参阅更新日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请参阅我们的安全策略以了解如何报告安全漏洞。

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。