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

Fasáda Imports

Všetko ide cez jednu fasádu RoundlyConsulting\Imports\Facades\Imports, ktorá je nadstavbou nad singletonom ImportsManager. Je zaregistrovaná aj ako globálny alias Imports:

use RoundlyConsulting\Imports\Enums\{SessionStatus, TemplateFormat};
use RoundlyConsulting\Imports\Facades\Imports;

// Importers and templates
Imports::importers()->available($user, $team);
Imports::register(AssetsImporter::class);
Imports::importer('assets')->descriptor('sk');
Imports::template('assets', TemplateFormat::Xlsx, locale: 'sk')->download();

// Everything for one owner — the entry point HTTP code uses
$imports = Imports::for($team)->by($user);
$session = $imports->upload('assets', $request->file('file'));
$files = $imports->uploadFiles('documents', $request->file('files'));
$imports->sessions('assets', SessionStatus::Previewed)->paginate();
$imports->session($id)->counts();
$imports->batch($id)->summary();
$imports->mappings('assets')->all();
$imports->running('assets');

// Trusted paths, the reader and housekeeping
Imports::session($model); Imports::batch($id);
Imports::read($request->file('file'));
Imports::sweep(); Imports::prune();

Celý proces od začiatku do konca:

$session = Imports::for($team)->by($user)->upload('assets', $request->file('file'));   // checked + stored
$session->suggestMapping();                       // MappingSuggestion (applied already when complete)
$session->map(['Inventory no' => 'asset_tag', 'Name' => 'name'])   // optional: by header text or column number
    ->saveMapping('ERP export');                  // optional: reused for identical headers
$session->mode(DuplicateMode::Update)->preview(); // ≤ 500 rows: now; more: queued (poll isPreviewed())
$session->counts();                               // ImportCounts
$session->rows(RowFilter::invalid())->paginate(50);
$batch = $session->commit();                      // a Laravel job batch
$batch->progress();
$batch->summary();
$batch->rollback();                               // within imports.undo.window

Metódy manažéra

MetódaVraciaČo robí
for(Model $owner)OwnerImportsVstupný bod v rámci vlastníka — nahrávanie, relácie, dávky, uložené mapovania. HTTP kód používa len tento.
importers()Accessors\Importersall(), find(), has(), describe(), available() — zisťovanie pre UI.
register(string ...$classes)voidRegistrácia za behu popri imports.importers.
importer(string $key)ImporterHandledescriptor(), template(), modes() — pri neznámom kľúči UnknownImporterException.
template(string $importer, ?TemplateFormat $format = null, ?string $locale = null)TemplateŠablóna CSV alebo XLSX; formát predvolene podľa imports.templates.default_format.
session(ImportSession|int|string $session)SessionHandleDôveryhodná cesta bez kontroly vlastníka — ak chýba, ImportNotFoundException.
batch(ImportBatch|int|string $batch)BatchHandleTo isté pre dávku.
read(ImportSource|UploadedFile|string $file, string|int|null $sheet = null, ?string $delimiter = null, int $headerRow = 1)SpreadsheetFileSamostatná čítačka — bez relácie, nič sa neukladá.
prune() · sweep()PruneReport · SweepReportTo, čo spúšťajú imports:prune a imports:sweep.
Imports::fake()ImportsFakeLen na fasáde — nahrávací fake (pozrite Testovanie).

container() a perform() sú na manažéri verejné, ale interné — perform() je lievik, cez ktorý každý handle spúšťa svoju akciu, a háčik, cez ktorý zaznamenáva fake. Z kódu aplikácie ich nevolajte.

Imports::for($owner)

MetódaVraciaČo robí
by(Authenticatable|Model|null $actor)OwnerImportsKópia konajúca ako $actor — LogicException, ak nejde o Eloquent model.
upload(string $importer, ImportSource|UploadedFile|string $file, string|int|null $sheet = null, ?string $delimiter = null, int $headerRow = 1, ?string $locale = null)SessionHandleSkontroluje, uloží a otvorí reláciu. authorize(Upload) beží skôr, než sa súbor prečíta.
uploadFiles(string $importer, iterable<UploadedFile>|UploadedFile $files, ?string $locale = null)SessionHandleDávka súborov: viac súborov alebo archívov ZIP.
sessions(?string $importer = null, SessionStatus ...$status)Builder<ImportSession>Najnovšie prvé — jeden importér (odmietne sa, ak ho aktér nesmie vidieť) alebo všetky, ktoré aktér smie vidieť.
session(int|string $id) · batch(int|string $id)SessionHandle · BatchHandleId iného vlastníka je ImportNotFoundException (404).
mappings(string $importer)SavedMappingsHandleall(), find(), save(), delete().
running(string $importer)?SessionHandleRelácia, ktorá sa práve importuje alebo vracia.

$sheet je názov (presne, potom bez ohľadu na veľkosť písmen) alebo poradie od 1 medzi viditeľnými hárkami; $headerRow sa číta od 1; $locale je jazyk relácie — popisy, správy a desatinný oddeľovač.

Handle relácie

Metódy, ktoré niečo menia, vracajú handle, takže sa dajú reťaziť. Čítanie sa pýta na authorize(View) raz za handle; zápisy na vlastnú operáciu. Zmena zdroja, mapovania a režimu, náhľad aj zahodenie sa odmietnu výnimkou ImportStateException, keď reláciu drží import:

MetódaVraciaČo robí
by($actor) · model() · id()SessionHandle · ImportSession · int|stringKópia konajúca ako $actor; jednoduché prístupové metódy.
status()SessionStatusZnovu načítané z databázy — View.
isValidating() · isPreviewed() · isCommitted()boolCommitted = importuje sa alebo akýkoľvek neskorší stav — View.
sheets() · headers()list<SheetInfo> · list<string>Prázdna hlavička sa číta ako Column C — View.
useSheet($sheet) · useDelimiter($delimiter) · useHeaderRow($row)selfZmení spôsob čítania uloženého súboru; náhľad sa zahodí — Upload.
suggestMapping()MappingSuggestionView.
map(array|ColumnMapping $mapping) · saveMapping(string $name)selfUpload.
mode(DuplicateMode $mode)selfUpload.
preview(?bool $queue = null)selfnull: priamo do preview.sync_threshold, inak vo fronte; true / false to vynúti — Upload.
counts() · previewData() · progress()ImportCounts · ImportPreview · Progressprogress() má fázu preview, alebo fázu dávky počas importu — View.
rows(?RowFilter $filter = null)RowQuerypaginate(), cursor(), count() — View.
errorReport(TemplateFormat $format = TemplateFormat::Xlsx, ?string $locale = null)TemplateChybné riadky a stĺpec Errors — View.
commit()BatchHandleCommit.
cancel()selfZruší bežiacu dávku, ak existuje — Commit.
discard()selfZmaže súbor a výsledky riadkov — Upload.
batch()?BatchHandleView.

Handle dávky

MetódaVraciaČo robí
by($actor) · model() · id()BatchHandle · ImportBatch · int|stringKópia konajúca ako $actor; jednoduché prístupové metódy.
session()SessionHandleView.
status()BatchStatusZnovu načítané — View.
isRunning() · isFinished() · isRolledBack()boolpending/running · completed/failed/cancelled · vrátené — View.
progress()ProgressFáza commit (časti) alebo rollback (vytvorené záznamy) — View.
summary()ImportSummaryView.
records(?RecordAction $action = null)Builder<ImportedRecord>Riadky evidencie zoradené podľa čísla riadka — View.
cancel() · resume()selfCommit.
rollback()selfRollback.
canRollback()boolCompleted/failed/cancelled, zatiaľ bez vrátenia alebo so zlyhaným, pred undo_until — View.
rollbackReport()?RollbackReportKeď sa vrátenie dokončilo alebo zlyhalo — View.

Importéry, šablóny a uložené mapovania

  • Imports::importers() — all() (každá ImportDefinition), find($key), has($key), describe($key, ?$locale), available(?$user, $owner, ?$locale).
  • Imports::importer($key) — descriptor(?$locale), template(?$format, ?$locale), modes() (prázdne pri importéri súborov).
  • Template — vlastnosti format a filename; download(?$filename), store($disk, $path), toTemporaryFile(?$target), contents().
  • Imports::for($owner)->mappings($importer) — all(), find($name), save($name, $columns), delete($name).
  • RowQuery ($session->rows($filter)) — paginate($perPage = 50, ?$page), cursor(), count().

Hodnotové objekty, DTO a enumy

  • Definície (Definition\): Field, NaturalKey, Ownership, ChangeDetection, FileRules, FileDuplicates, Limits, FieldChange. Argumenty callbackov (Rows\): ImportRow, ImportContext, ImportFile. Čítanie (Reading\): SpreadsheetFile, Cell, ReadOptions.
  • DTO (final readonly): ImportSource, UploadData, UploadFilesData, SaveMappingData, ColumnMapping, MappedColumn, MappingSuggestion, SuggestedColumn, SavedMapping, SheetInfo, ImportCounts, ImportPreview, RowFilter, RowResult, CellError, RecordReference, Progress, ImportSummary, RollbackReport, ImportedRecordView, ImportAudit, FileReference, ImporterDescriptor, FieldDescriptor, OptionDescriptor, PruneReport, SweepReport, DoctorFinding.
  • Modely (vymeniteľné cez imports.models.*): ImportSession, ImportBatch, ImportRowResult, ImportedRecord. ImportSession a ImportBatch majú handle() a countOf(string $key) — jeden uložený počet (valid, creates, created, …), 0, ak chýba; statické ImportSession::count() je počet riadkov z Eloquentu.
  • Enumy majú reťazcové hodnoty, používajú pomocníkov z enums-for-laravel (label(), labels(), options(), values(), fromLabel(), is(), …) a ich popisy sú preložené do angličtiny a slovenčiny:
EnumHodnoty
SessionStatusuploaded, needs_mapping, mapped, validating, previewed, preview_failed, committing, completed, failed, cancelled, rolling_back, rolled_back, rollback_failed, discarded, expired — plus ::beforeCommit(), ::undoable(), isBeforeCommit()
BatchStatuspending, running, completed, failed, cancelled
RollbackStatusrolling_back, rolled_back, rollback_failed
RowStatus · RowOutcomevalid, invalid, duplicate_in_file, matched, failed · create, update, skip
RecordActioncreated, linked, updated
RollbackOutcomedeleted, handled, kept, kept_changed, missing, failed
DuplicateModeskip, update, create_new
ImportOperationview, upload, commit, rollback
ImportKindrows, files
FieldTypetext, integer, decimal, boolean, date, datetime, email, choice, reference
SourceFormat · TemplateFormatcsv, xlsx
CellTypetext, number, boolean, date, error
MappingSourcesaved, name, label, alias, fuzzy, manual, suggested
DelimiterSourcesniffed, hint (sep=), override
RejectionReason27 hodnôt — pozrite Čítanie súborov

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.