← Папярэдняя · Назад да 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 і гэтак далей.
Поўны прыклад
Поўны клас стужкі, каманды генерацыі і чаканыя шляхі вываду глядзіце ў рэцэпце некалькіх мэтавых файлаў стужкі.