Modely, scopy a mäkké mazanie
Form obsahuje dopytové scopy public(), active() (bez expirácie alebo ešte neexpirovaný), expired() a forKey($key). Group a Field ponúkajú ordered():
use RoundlyConsulting\Forms\Models\Form;
$openForms = Form::query()->public()->active()->get();
Form::query()->expired()->get(); // expires_at in the past
Form::query()->forKey('contact')->first(); // by key
$form->groups()->ordered()->get(); // Group::ordered() — by `order`
$group->fields()->ordered()->get(); // Field::ordered() — by `order`Riadky Submission pridávajú scopy final() a draft(), FormSubmission pridáva pendingApproval().
Mäkké mazanie
Všetky modely používajú soft deletes — zmazaný formulár zostane v databáze aj s riadkami a odpoveďami, obnovíte ho cez restore() a dopytujete cez withTrashed(). Mazanie sa nekaskáduje, takže mäkké zmazanie formulára ponechá jeho skupiny, polia aj odpovede a staršie odpovede zostanú čitateľné aj po mäkkom zmazaní poľa, skupiny či formulára, na ktoré odpovedali.
Mäkko zmazaný formulár, skupina či pole uvoľní svoj kľúč: nový formulár ho môže prevziať (nová skupina či pole v rámci toho istého formulára či skupiny tiež) a forms:sync / Forms::update() ho znova vytvoria. Obnovenie záznamu si kľúč vezme späť — a zlyhá na porušení unikátneho obmedzenia, kým kľúč drží živý záznam:
$form->delete(); // soft delete — groups, fields and submissions stay intact, the key is freed
// A new form can take the freed key; forms:sync and Forms::update() re-create it.
// Restoring takes the key back — and fails while a live form holds it.
Form::withTrashed()->forKey('contact')->first()?->restore();
// Force-deleting a submission row also purges its attachment media.
$row->forceDelete();Výmena modelov
Ktorýkoľvek záznam forms.models nasmerujte na vlastnú triedu, ak potrebujete ďalšie stĺpce, vzťahy či scopy. Vlastný model musí byť modelom balíka alebo z neho dediť — akákoľvek iná trieda vyhodí InvalidConfigurationException s názvom kľúča namiesto toho, aby sa potichu použil model balíka:
// config/forms.php
'models' => [
'form' => \App\Models\Form::class,
// ...
],
// app/Models/Form.php — must extend the package model
namespace App\Models;
class Form extends \RoundlyConsulting\Forms\Models\Form
{
// extra columns, relations, scopes
}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.