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

Trait HasContacts

Pridajte trait HasContacts na akýkoľvek Eloquent model — používateľa, firmu, objednávku. Bez zmeny schémy pre každý model:

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Contacts\Concerns\HasContacts;

class User extends Model
{
    use HasContacts;
}

Pridávanie kontaktov

Trait je skratka nad tým istým manažérom, ktorý používa fasáda Contacts — prechádza ním každá pomocná metóda, takže hodnoty sa normalizujú a validujú, uplatní sa automatický primárny kontakt, spustia sa udalosti a Contacts::fake() volanie zaznamená:

use RoundlyConsulting\Contacts\DataTransferObjects\ContactData;
use RoundlyConsulting\Contacts\Enums\ContactType;

// Add — normalized + validated, primary guaranteed unique per kind.
$user->addEmail('[email protected] ', label: 'Work', primary: true);
$user->addPhone('+421 900 000 000', label: 'Mobile');
$user->addUrl('example.com');
$user->addAddress('12 Main St');

// Any kind, from a DTO
$user->addContact(new ContactData(ContactType::Social, '@janedoe', label: 'Mastodon'));
  • addEmail(), addPhone(), addUrl(), addAddress() — každá prijíma (string $value, ?string $label = null, bool $primary = false).
  • addContact(ContactData $data) — ľubovoľný druh vrátane registrovaných vlastných druhov.
  • addStructuredAddress(AddressData $data, ?string $label = null, bool $primary = false) — pozrite Štruktúrované adresy.

Čítanie kontaktov

$user->primaryEmail()?->value;                    // '[email protected]'
$user->primaryPhone()?->value;                    // '+421900000000'
$user->primaryContact(ContactType::Url);          // ?Contact — enum or string kind
$user->contactsOfType('phone');                   // ordered EloquentCollection<Contact>

$user->contactBook();                             // the ContactBook — same as Contacts::for($user)

$user->contacts;                                  // Collection — every contact
$user->contacts()->primary()->verified()->get();  // scopes chain on the relation
  • contacts() — relácia MorphMany; dajú sa na ňu reťaziť všetky scopy modelu Contact.
  • contactsOfType(ContactType|string) — jeden druh, zoradený podľa position a potom id.
  • primaryContact(ContactType|string) — primárny kontakt daného druhu alebo null.
  • primaryEmail() / primaryPhone() — skratky pre dva najčastejšie druhy.
  • contactBook() — ContactBook vlastníka, ten istý objekt, ktorý vráti Contacts::for($user).

Model Contact

Každý Contact sprístupňuje svoj druh, hodnotu, príznaky a metadáta:

$contact->type;          // ContactType::Email
$contact->kind;          // 'email' — the raw stored kind
$contact->value;         // '[email protected]'
$contact->label;         // 'Work' — free-text label for this one contact
$contact->name;          // display name ('' when not set)
$contact->category;      // ?string
$contact->is_primary;    // bool
$contact->position;      // int — order within the kind
$contact->verified_at;   // ?Carbon
$contact->meta;          // Collection (JSON column)
$contact->owner;         // the owning model (MorphTo), or null

$contact->isVerified();  // bool
$contact->kindLabel();   // 'Email'
$contact->kindIcon();    // 'envelope'

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.