---
title: "Migrácie len na publikovanie — Package Toolkit for Laravel | Roundly"
description: "Migrácie balíka sa nikdy nenačítajú automaticky: publikujú sa s usporiadanými pečiatkami, prepíšu sa na mieste a migrate spustí hostiteľ."
url: https://roundly-consulting.com/sk/open-source/navody/package-toolkit-for-laravel/migracie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Package Toolkit for Laravel](https://roundly-consulting.com/sk/open-source/navody/package-toolkit-for-laravel.md)

# 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:

```bash
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:

```php
$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. Všetky providery čerpajú z jedného kurzora pre celý proces, takže keď jeden beh vendor:publish publikuje viac balíkov, súbory každého balíka nasledujú za súbormi predchádzajúceho a pečiatky sa nezdieľajú. Č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():

```bash
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
```

## Upravili ste publikovanú migráciu? Zmažte duplikát

Upravená kópia sa už nezhoduje so zdrojom balíka, takže ďalšie publikovanie tagu — s --force aj bez neho — pridá migráciu balíka znova vedľa nej, pod novou časovou pečiatkou. Rovnako to dopadne, keď nové vydanie balíka zmení migráciu, ktorú ste už publikovali. Dva súbory create\_comments\_table spôsobia, že php artisan migrate zlyhá s chybou „table already exists“. Ponechajte kópiu, ktorá už prebehla, novú zmažte a zmenu, o ktorú z nej stojíte, presuňte do vlastnej novej migrácie.

## 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. nextTimestamp() vydá ďalšiu pečiatku publikovania z toho istého kurzora, ktorý používa základný provider — aktuálnu sekundu, alebo o sekundu neskoršiu než posledná vydaná v tomto procese —, takže migrácie vlastného publikovacieho príkazu sa zaradia za všetko ostatné publikované v tom istom behu:

```php
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'),
    MigrationPublisher::nextTimestamp(),
);
// the file it was already published to (same name, same contents),
// or …/database/migrations/<Y_m_d_His>_create_comments_table.php
```

resetTimestamps() kurzor zabudne, takže ďalšou pečiatkou bude opäť aktuálna sekunda. Volajte ju v setUp() testovacej sady, ešte pred bootom aplikácie, ak testy fixujú pečiatky publikovania.

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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/package-toolkit-for-laravel.md)
