---
title: "Databázové úložisko — Campaigns for Laravel | Roundly"
description: "Prechod na DatabaseCampaignStore — schéma, Eloquent modely, factories a pravidlo UUID pre uložené kampane."
url: https://roundly-consulting.com/sk/open-source/navody/campaigns-for-laravel/databazove-ulozisko
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Campaigns for Laravel](https://roundly-consulting.com/sk/open-source/navody/campaigns-for-laravel.md)

# 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:

```bash
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:

```php
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:

```php
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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/campaigns-for-laravel.md)
