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

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 migrate

Migrá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í
10001_create_approvals_tableTabuľka rozhodnutí approvals.
20002_create_approval_requests_tableŽiadosti pre viacerých schvaľovateľov approval_requests.
30003_add_v11_columns_to_approvals_tablePridá decided_by (delegovanie), weight a approval_request_stage_id.
40004_add_staging_to_approval_requests_tablePridá staged, reject_on_stage_rejection a workflow.
50005_create_approval_request_stages_tableTabuľka approval_request_stages pre viacstupňové schvaľovanie.
60006_create_approval_delegations_tableTabuľka approval_delegations.
70007_change_approval_request_id_to_bigintNa 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 migrate

MySQL: 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 migrate

Ostatné 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 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.