Inštalácia
Pridajte balík. Service provider, alias fasády Approvals aj globálny pomocník approvals() sa načítajú automaticky — nič nemusíte registrovať:
composer require roundly-consulting/approvals-for-laravel
php artisan vendor:publish --tag="approvals-migrations"
php artisan migrateMigrácie iba na publikovanie
Migrácie sa nenačítavajú automaticky — php artisan migrate nevytvorí nič, kým ich nepublikujete. Sedem súborov sa uloží do database/migrations s časovými značkami, ktoré zachovajú ich poradie, takže migrate vytvorí štyri tabuľky a každú zmenu schémy aplikuje až po tabuľke, ktorú upravuje:
| # | Migrácia | Čo robí |
|---|---|---|
| 1 | 0001_create_approvals_table | Tabuľka rozhodnutí approvals. |
| 2 | 0002_create_approval_requests_table | Žiadosti pre viacerých schvaľovateľov approval_requests. |
| 3 | 0003_add_v11_columns_to_approvals_table | Pridá decided_by (delegovanie), weight a approval_request_stage_id. |
| 4 | 0004_add_staging_to_approval_requests_table | Pridá staged, reject_on_stage_rejection a workflow. |
| 5 | 0005_create_approval_request_stages_table | Tabuľka approval_request_stages pre viacstupňové schvaľovanie. |
| 6 | 0006_create_approval_delegations_table | Tabuľka approval_delegations. |
| 7 | 0007_change_approval_request_id_to_bigint | Na PostgreSQL s key_type uuid zmení approvals.approval_request_id na bigint; inde nerobí nič. |
Používajú modely, ktoré schvaľujú alebo sú schvaľované, UUID či ULID kľúče? Pred migráciou nastavte key_type — určuje typ všetkých polymorfných id stĺpcov (pozri Modely a schéma).
Prechod z verzie 1.0.0
Verzia 1.0.1 pridáva migráciu 0007. Publikujte ju — migrácie, ktoré ste už publikovali, zostanú nezmenené — a spustite migrate. Účinok má len na PostgreSQL s key_type uuid, kde vo verzii 1.0.0 zlyhalo každé rozhodnutie v žiadosti; inde nerobí nič:
php artisan vendor:publish --tag="approvals-migrations"
php artisan migrateMySQL: migrate zlyhal so SQLSTATE 1071
Do verzie 1.1.0 migrácia 0001_create_approvals_table na MySQL 8 s utf8mb4 zlyhala (SQLSTATE 1071, „Specified key was too long; max key length is 3072 bytes“): jej index approvals_actor_approvable_status_index mal 3076 bajtov. Verzia 1.1.1 migráciu opravuje priamo — index teraz pokrýva actor_id, actor_type, approvable_id a approvable_type a status má vlastný index. MySQL zmeny schémy nevracia späť, takže neúspešný beh po sebe nechal prázdnu tabuľku approvals. Postup obnovy: aktualizujte balík, publikujte migrácie znova cez svoje kópie, túto tabuľku zmažte a spustite migrate:
composer update roundly-consulting/approvals-for-laravel
php artisan vendor:publish --tag="approvals-migrations" --force
php artisan db # then: DROP TABLE approvals; (empty, left by the failed run)
php artisan migrateOstatné inštalácie — PostgreSQL alebo MySQL s utf8mb3, kde stará 0001 prebehla — nemusia robiť nič. Ponechajú si päťstĺpcový index s rovnakým názvom, ktorý slúži tým istým dopytom, a žiadna neskoršia migrácia sa ho nedotkne.
Konfigurácia (voliteľná)
Balík funguje bez akejkoľvek konfigurácie v aplikácii. Konfiguráciu publikujte, len keď chcete zmeniť niektorú predvolenú hodnotu:
php artisan vendor:publish --tag="approvals-config"Jediné publikačné tagy sú approvals-migrations a approvals-config — balík nemá vlastné views ani preklady.
Ďalšie kroky
- Pridajte GivesApprovals na model, ktorý rozhoduje, a HasApprovals na model, o ktorom sa rozhoduje.
- Pridajte RequiresApproval na všetko, čo potrebuje súhlas viacerých schvaľovateľov.
- Zaznamenajte prvé rozhodnutie cez fasádu Approvals.
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.