Перайсці да асноўнага змесціва

← Папярэдняя · Назад да README · Наступная →

Асобныя выходныя файлы для партнёраў, крам або лакаляў

Выкарыстоўвайце мэты стужкі, калі адна зарэгістраваная стужка павінна ствараць незалежны адфільтраваны выходны файл для кожнага партнёра, крамы, лакалі або іншага бізнес-ключа.

Выберыце правільны тып падзелу

Выраз «падзяліць стужку на файлы» можа азначаць два розныя механізмы:

МэтаВыкарыстоўвайце
Адзін адфільтраваны вынік для кожнага партнёра, крамы, лакалі або іншага бізнес-ключаHasFeedTargets і FeedTarget
Паслядоўныя часткі з фіксаванай колькасцю запісаў у кожным файлеperFile() і, пры неабходнасці, maxFiles()
Асобныя вынікі, кожны з якіх можа складацца з некалькіх частакМэты стужкі разам з perFile()

Мэты стужкі падзяляюць даныя паводле сэнсу ў праграме. perFile() падзяляе адзін ужо выбраны набор даных паводле колькасці запісаў.

Як працуюць мэты стужкі

У табліцы feeds па-ранейшаму захоўваецца адзін радок для класа стужкі. Кожны FeedTarget апісвае адзін варыянт вываду са стабільным ключом і невялікім здымкам параметраў.

Рэалізуйце HasFeedTargets у класе стужкі. Убудаваны трэйт InteractsWithFeedTargets забяспечвае forTarget() і target(), а клас стужкі рэалізуе выяўленне і пошук:

МетадАдказнасць
targets(): iterableЛяніва вяртае ўсе даступныя вынікі для поўнага запуску камандай і паводле раскладу.
findTarget(string $key): ?FeedTargetВызначае адзін яўна запытаны ключ --target або вяртае null.
forTarget(FeedTarget $target): staticВяртае наладжаную копію стужкі.
target(): FeedTargetВяртае актыўную мэту ў builder(), filename() і іншых пунктах выканання.

FeedTarget::$key павінен быць непустым, стабільным, унікальным у межах класа стужкі і бяспечным для паказу. Ключы не нармалізуюцца і не ачышчаюцца. Яны з'яўляюцца ў кансольным вывадзе, JSON агента, падзеях і кантэксце памылак.

FeedTarget::$parameters — гэта здымак даных праграмы, які захоўваецца ў задачах чаргі. Ён павінен быць невялікім, прыдатным да серыялізацыі і не змяшчаць сакрэтаў. Захоўвайце ідэнтыфікатары замест мадэляў Eloquent.

папярэджанне

Кожная мэта павінна мець асобнае імя выходнага файла. Інакш наступная мэта перазапіша папярэдні вынік. Выкарыстоўвайце ключ мэты ў шляху толькі тады, калі праграма кантралюе яго фармат.

Згенеруйце выходныя файлы

Згенеруйце ўсе мэты, вернутыя targets():

php artisan feed:generate 123

Згенеруйце адну або некалькі выбраных мэт:

php artisan feed:generate 123 --target=42
php artisan feed:generate 123 --target=42 --target=81

Яўныя ключы выкарыстоўваюць findTarget() замест пералічэння targets(). Ключы-дублікаты апрацоўваюцца адзін раз у парадку першага з'яўлення. Усе запытаныя ключы вызначаюцца да пачатку генерацыі.

Поўнае пералічэнне выконваецца патокава, а не атамарна. Калі targets() завяршыцца памылкай пасля вяртання некалькіх значэнняў, папярэднія мэты ўжо могуць быць згенераваны або пастаўлены ў чаргу. Запланаваная стужка генеруе ўсе мэты, а ў рэжыме чаргі для кожнай мэты адпраўляецца асобная задача.

Звычайны падзел паводле колькасці запісаў прымяняецца асобна да кожнай мэты. Напрыклад, partners/42.xml ператвараецца ў partners/42-1.xml, partners/42-2.xml і гэтак далей.

Поўны прыклад

Поўны клас стужкі, каманды генерацыі і чаканыя шляхі вываду глядзіце ў рэцэпце некалькіх мэтавых файлаў стужкі.

Глядзіце таксама