Databázové úložisko
InMemoryCampaignStore drží kampane v pamäti počas aktuálneho requestu, konzolového príkazu alebo jobu vo fronte — ideálne pre testy a jednorazové odoslanie. Pre kampane, ktoré neskôr vyhľadávate, spúšťate či rušíte — odložené spustenie, dashboardy, opakovania, audit — prepnite jedným riadkom na dodávané databázové úložisko:
CAMPAIGNS_STORE='RoundlyConsulting\Campaigns\Stores\DatabaseCampaignStore'Potom publikujte a spustite migrácie (pozrite si časť Inštalácia) — nikdy sa nenačítajú automaticky. Databázové úložisko sa správa ako úložisko v pamäti — proti obom beží tá istá sada kontraktových testov — vrátane kľúčovania príjemcov podľa kampane, takže ten istý príjemca pridaný do dvoch kampaní zostane v oboch.
Schéma
| Tabuľka | Stĺpce | Model |
|---|---|---|
campaigns | id, uuid (unique), subject, content (longText), from_name, from_address, status (indexed, default Created), sent, failed, pending, total, batch, started_at, ended_at, timestamps, deleted_at | CampaignRecord |
campaign_recipients | id, uuid, campaign_uuid (indexed), name, reachable_at, has_been_processed, error_occured, error_message, timestamps, deleted_at — unique (campaign_uuid, uuid) | CampaignRecipientRecord |
Modely
Záznamy sú bežné Eloquent modely so soft deletes, takže sa na ne môžete dopytovať pre dashboardy a reporty:
use RoundlyConsulting\Campaigns\Enums\CampaignStatus;
use RoundlyConsulting\Campaigns\Models\CampaignRecord;
$record = CampaignRecord::query()->where('uuid', $uuid)->firstOrFail();
$record->status; // CampaignStatus (cast)
$record->recipients()->count(); // HasMany CampaignRecipientRecord
$record->recipients()->where('error_occured', true)->get(); // failed recipients
CampaignRecord::query()->where('status', CampaignStatus::Processing)->get();Oba modely majú factories pre vaše testy:
use RoundlyConsulting\Campaigns\Models\CampaignRecipientRecord;
use RoundlyConsulting\Campaigns\Models\CampaignRecord;
$campaign = CampaignRecord::factory()->create();
CampaignRecipientRecord::factory()->count(3)->create([
'campaign_uuid' => $campaign->uuid,
]);Používajte skutočné UUID
Pri databázovom úložisku musia byť id kampaní aj príjemcov platné UUID. find() a findRecipient() pre čokoľvek iné vrátia null bez dopytu do databázy, takže vlastné ->uuid() alebo id v CampaignRecipient, ktoré nie je UUID, už nenájdete. Vygenerované id sú vždy platné.
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.