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 kryptomienOdoslaní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.