Migrácie len na publikovanie
Balík postavený na toolkite svoje migrácie nikdy nenačítava automaticky. Hostiteľská aplikácia ich publikuje a spustí migrátor:
php artisan vendor:publish --tag=comments-migrations
php artisan migrateDeklarácia migrácií
hasMigrations() publikuje každý súbor database/migrations/*.php. hasMigration() pridá jeden zdroj database/migrations/<name>.php.stub — používajte ju len pre súbory .php.stub, pretože súbory .php už zachytí hasMigrations(). Obe publikujú pod tagom <name>-migrations:
$package
->name('comments')
->hasMigrations() // every database/migrations/*.php
->hasMigration('create_comment_reactions_table'); // database/migrations/create_comment_reactions_table.php.stubČasové pečiatky a poradie
Každý súbor sa publikuje do database/migrations/<Y_m_d_His>_<name>.php, takže sa zaradí medzi vlastné migrácie hostiteľa. Ak balík dodáva viac migrácií, ich pečiatky sa posúvajú o jednu sekundu na súbor v poradí zoradenia adresára balíka — migrácie závislé od tabuliek iných migrácií tak stále bežia v správnom poradí. Migrácie .php.stub deklarované cez hasMigration() nasledujú po súboroch .php v poradí deklarácie. Časovú pečiatku, ktorou balík prípadne označil zdrojový súbor, nahradí pečiatka publikovania:
package: database/migrations/
2020_01_01_000000_create_comments_table.php
create_comment_votes_table.php
create_comment_reactions_table.php.stub
host, after vendor:publish --tag=comments-migrations: database/migrations/
2026_07_15_101500_create_comments_table.php
2026_07_15_101501_create_comment_votes_table.php
2026_07_15_101502_create_comment_reactions_table.phpOpätovné publikovanie je bezpečné
Resolver cieľa znovu použije súbor, do ktorého už bola migrácia publikovaná, bez ohľadu na jeho pečiatku. Vynútené opätovné publikovanie tak súbor prepíše na mieste namiesto toho, aby pridalo druhú, inak označenú kópiu toho istého Schema::create():
php artisan vendor:publish --tag=comments-migrations --forceVaše vlastné migrácie sa nikdy neprepíšu
Súbor sa považuje za skoršiu kópiu, len ak má rovnaký názov a zároveň obsah zdrojového súboru balíka — rozdiely v bielych znakoch, napríklad konce riadkov, sa ignorujú. Rovnomenná migrácia s iným obsahom — vlastná create_comments_table vašej aplikácie, migrácia iného balíka alebo kópia, ktorú ste po publikovaní upravili — sa nikdy neprepíše, ani s --force. Migrácia balíka sa publikuje vedľa nej pod novou časovou pečiatkou a o tom, ktorú si ponecháte, rozhodnete vy:
host, before: database/migrations/
2025_03_02_090000_create_comments_table.php your app's own — different contents
host, after vendor:publish --tag=comments-migrations --force:
2025_03_02_090000_create_comments_table.php untouched
2026_07_15_101500_create_comments_table.php the package's, published beside itPomocník MigrationPublisher
Logika pomenovania a cieľa je dostupná aj samostatne, ako RoundlyConsulting\PackageToolkit\Support\MigrationPublisher. destination() prijíma zdrojový súbor balíka, aby mohla pred opätovným použitím súboru hostiteľa porovnať obsah:
use Illuminate\Support\Carbon;
use RoundlyConsulting\PackageToolkit\Support\MigrationPublisher;
MigrationPublisher::nameFor('2020_01_01_000000_create_comments_table.php');
// 'create_comments_table' — extension and any timestamp prefix stripped
MigrationPublisher::nameFor('create_comment_reactions_table.php.stub');
// 'create_comment_reactions_table'
MigrationPublisher::destination(
__DIR__.'/../database/migrations/create_comments_table.php', // the package source file
database_path('migrations'),
Carbon::now(),
);
// the file it was already published to (same name, same contents),
// or …/database/migrations/<Y_m_d_His>_create_comments_table.phpKeďže sa nič nenačítava automaticky, vlastná testovacia sada balíka musí migrácie spustiť explicitne — pozrite časť Testovanie.
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.