---
title: "Mapovanie stĺpcov — Imports for Laravel | Roundly"
description: "Návrhy mapovania podľa hlavičiek, popisov, aliasov a podobných zápisov, map() podľa hlavičky či stĺpca a uložené mapovania, ktoré sa použijú samy."
url: https://roundly-consulting.com/sk/open-source/navody/imports-for-laravel/mapovanie-stlpcov
language: sk
---

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

[Imports for Laravel](https://roundly-consulting.com/sk/open-source/navody/imports-for-laravel.md)

# Mapovanie stĺpcov

Po nahratí dostane každý stĺpec navrhnuté pole. Úplný návrh — každé povinné pole, nič približné — sa použije hneď pri nahratí (stav mapped); inak relácia čaká na vás (needs\_mapping).

## Ako vznikajú návrhy

Hlavičky sa normalizujú: prevedú sa do ASCII a na malé písmená, koncové \* / (required) / (povinné) sa vynechá a všetko ostatné okrem písmen a číslic sa zmení na \_ (Inventárne č. \* → inventarne\_c). Každý stĺpec potom dostane najlepšiu z možností:

| Zhoda | Istota | Zdroj |
| --- | --- | --- |
| uložené mapovanie pre presne tento riadok hlavičky | 1.00 | `saved` |
| názov poľa | 1.00 | `name` |
| popis v headers.locales, aktuálnom alebo záložnom jazyku | 0.98 | `label` |
| alias | 0.95 | `alias` |
| podobný zápis ≥ headers.fuzzy\_threshold — označený, nikdy sa nepoužije bez kontroly | ≥ 0,85 | `fuzzy` |

Postupuje sa nenásytne, každé pole raz, pri zhode vyhrá stĺpec viac vľavo.

```php
$suggestion = $session->suggestMapping();
$suggestion->columns;            // list<SuggestedColumn>: index, header, field, confidence, source; isFuzzy()
$suggestion->unmappedRequired;   // field names
$suggestion->ignoredColumns;     // column indexes
$suggestion->savedMapping;       // the saved mapping's name, or null
$suggestion->isComplete();

$session->map($suggestion->toMapping());   // apply it as it is
```

## Mapovanie podľa hlavičky alebo stĺpca

```php
use RoundlyConsulting\Imports\DataTransferObjects\ColumnMapping;

$session->map(['Inventárne č.' => 'asset_tag', 3 => 'name']);   // by header text or 0-based column index (3 = column D)
$session->map(['Notes' => null]);                               // leave a column unmapped
$session->map(ColumnMapping::fromArray([2 => 'name']));         // always by 0-based column index
$session->saveMapping('ERP export');
```

- Celočíselné kľúče sú indexy stĺpcov od 0 — okrem prípadu, keď sa toto číslo nachádza v hlavičke (hlavička 2024 je v PHP celočíselný kľúč); vtedy sa mapuje podľa textu.
- Číslo, ktoré je hlavičkou a zároveň indexom iného stĺpca, sa odmietne, nehádá sa — namapujte ho výslovne cez ColumnMapping, ktoré je vždy podľa indexu.
- Odmietne sa výnimkou InvalidMappingException (422, chyby s kľúčmi columns.<column> / fields.<field>): neznáme pole alebo stĺpec, pole namapované dvakrát, duplicitná hlavička uvedená textom (použite jej číslo), nenamapované povinné pole.
- Zmena mapovania zahodí náhľad a zvýši preview\_version; import podľa staršej verzie sa odmietne.
- Keď reláciu drží import — aj taký, ktorý sa začal o okamih skôr z inej karty alebo workera — zmena mapovania sa odmietne výnimkou ImportStateException, takže nikdy neprepíše plán bežiaceho importu.

## Uložené mapovania

Mapovanie raz pomenujete a každý ďalší súbor s rovnakými hlavičkami sa namapuje sám — aj keď sú stĺpce v inom poradí. Uložíte ho z relácie alebo z textu hlavičiek:

```php
$mappings = Imports::for($team)->by($user)->mappings('assets');

$mappings->all();                                     // list<SavedMapping>
$mappings->find('ERP export');                        // ?SavedMapping
$mappings->save('ERP export', ['Inventárne č.' => 'asset_tag', 'Názov' => 'name']);
$mappings->delete('ERP export');                      // false when there was none
```

- $session->saveMapping($name) (hlavičky a mapovanie relácie spolu s oddeľovačom, hárkom a riadkom hlavičky) aj mappings($importer)->save() spúšťajú SaveMappingAction, takže obe ukladajú rovnaký tvar, spúšťajú MappingSaved a fake ich zaznamenáva rovnako. Uloženie pod existujúcim názvom ho nahradí.
- Akcia kontroluje v tomto poradí: uložené mapovania sú zapnuté; ide o importér riadkov; authorize(Upload); názov s 1–60 znakmi, aspoň jeden stĺpec, každé pole známe a namapované raz; potom limity na importér a veľkosť. Odmietnutia vyhodia InvalidSavedMappingException alebo TooManySavedMappingsException (obe 422).
- Ukladajú sa pre vlastníka cez options-for-laravel (option imports.mappings, jeden riadok na vlastníka), kľúčujú sa normalizovanou hlavičkou a automaticky sa použijú pre identický riadok hlavičky — nikdy, ak sa normalizované hlavičky zrazia.
- Podpisy hlavičiek nezávisia od jazyka — vždy sa prepisujú pod en — takže mapovanie, ktoré uložil slovenský používateľ, sa rozpozná aj pre nemeckého.
- Najviac mappings.max\_per\_importer (20) na importér a mappings.max\_bytes spolu. Zápisy sa serializujú zámkom v cache — mappings.lock\_store nastavte na zdieľané úložisko.

## 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/imports-for-laravel.md)
