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

Primárne kontakty a poradie

Každý vlastník má vždy najviac jeden primárny kontakt pre každý druh. Pri zapnutom auto_primary (predvolene) si druh, ktorý má kontakty, primárny aj udrží: stane sa ním prvý pridaný, a keď primárny kontakt zmažete, odstránite synchronizáciou alebo presuniete do iného druhu, povýši sa ďalší podľa poradia. Označenie iného kontaktu ako primárneho zosadí predchádzajúci v rámci databázovej transakcie:

$first = $user->addEmail('[email protected]');     // first email: primary automatically
$second = $user->addEmail('[email protected]', primary: true);

$first->fresh()->is_primary;     // false — demoted in the same transaction
$second->fresh()->is_primary;    // true

$phone = $user->addPhone('+421900000000');   // each kind keeps its own primary
$phone->is_primary;                          // true

Contacts::setPrimary($first);                // promote again; fires PrimaryContactChanged

Contacts::delete($first);                    // the primary leaves its kind...
$second->fresh()->is_primary;                // true — ...and the next by position takes over
  • Primárne kontakty sa určujú podľa vlastníka a surového druhu — email, phone aj každý registrovaný vlastný druh má svoj.
  • Kontakty bez vlastníka zdieľajú medzi sebou jeden primárny kontakt na druh.
  • PrimaryContactChanged sa spustí s novým primárnym kontaktom a so zosadeným (alebo null) — aj pri automatickom povýšení.
  • Pri vypnutom auto_primary sa za vás nič nepovyšuje.
  • Obnovený primárny kontakt sa vráti ako sekundárny, ak medzitým jeho druh povýšil iný kontakt.
  • Pri zapnutom require_owner_for_primary vyhodí povýšenie kontaktu bez vlastníka PrimaryContactConflict a druhy bez vlastníka sa automaticky nepovyšujú.

Poradie

Každý kontakt má v rámci svojho druhu pozíciu. Nové kontakty dostanú ďalšie voľné miesto (od 0), pokiaľ ho ContactData nenastaví explicitne; sync() priraďuje pozície podľa poradia vstupu:

$user->addPhone('+421900000001');   // position 0
$user->addPhone('+421900000002');   // position 1 — next free slot within the kind

// Pin a position explicitly
$user->addContact(new ContactData(ContactType::Phone, '+421900000003', position: 0));

$user->contactsOfType(ContactType::Phone);            // ordered by position, then id
Contact::query()->forOwner($user)->ordered()->get();

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.