NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Addresses for Laravel

Trait HasAddresses

Trait pridajte každému Eloquent modelu, ktorý vlastní adresy — zákazníkom, firmám, objednávkam, prevádzkam. Implementácia kontraktu Addressable je voliteľná, ale umožní ostatnému kódu typovať rozhranie namiesto konkrétneho modelu:

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Addresses\Contracts\Addressable;
use RoundlyConsulting\Addresses\Traits\HasAddresses;

class Customer extends Model implements Addressable
{
    use HasAddresses;
}

Vzťah

addresses() je vzťah MorphMany na nakonfigurovaný model adresy, takže na ňom máte k dispozícii všetky metódy Eloquent dopytov aj scopy balíka:

use RoundlyConsulting\Addresses\Enums\AddressType;

$customer->addresses;                                             // Collection of Address
$customer->addresses()->count();
$customer->addresses()->primary()->ofType(AddressType::Billing)->get();
$customer->addresses()->inCountry('SK')->latest()->get();

Čo trait pridáva

  • addresses() — polymorfný vzťah.
  • newAddress() — spustí fluentný builder naviazaný na tento model.
  • addAddress(AddressData $data) a createAddress(...) — vytvorenie z DTO alebo z pomenovaných argumentov.
  • getAddressOfType(), getPrimaryAddressOfType(), primaryAddress(), addressesOfType(), hasAddresses() — čítanie.
  • setPrimaryAddress(Address $address) — povýši jednu z adries tohto modelu na primárnu, s kontrolou vlastníctva.
  • addressBook() — AddressBook tohto modelu, ten istý objekt, ktorý vráti Addresses::for($model).

Pomocníci sú len skratkou nad fasádou: každý prechádza adresárom modelu, takže každé volanie vidia aj vaše prepísané akcie a Addresses::fake().

Typovanie cez kontrakt

Addressable deklaruje všetky metódy traitu okrem addresses(), createAddress() a addressBook(), takže vaše funkcie môžu prijať ľubovoľného vlastníka adries:

use RoundlyConsulting\Addresses\Address;
use RoundlyConsulting\Addresses\Contracts\Addressable;
use RoundlyConsulting\Addresses\Enums\AddressType;

function shippingAddressFor(Addressable $owner): ?Address
{
    return $owner->primaryAddress(AddressType::Shipping)
        ?? $owner->getAddressOfType(AddressType::Shipping);
}

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.