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

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 migrate

Deklará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.php

Opä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 --force

Vaš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 it

Pomocní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.php

Keďž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 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.