Перайсці да асноўнага змесціва
Версія: 2.x

Пераход з 1.x на 2.x

Выканайце гэтыя крокі пры пераходзе існуючай праграмы з Laravel Feeds 1.x на 2.x. Калі ўсталяваная версія 1.x ужо мае slug стужак або абноўленыя назвы новых рэгістрацый, захавайце гэтыя змены і прапусціце выкананыя крокі.

Патрабаванні да асяроддзя​

Кампанент1.x2.x
PHP^8.2^8.4
Кампаненты Laravel^11.0 || ^12.0 || ^13.0^13.0

Перад усталяваннем 2.x абнавіце залежнасці Laravel праграмы і версіі PHP для вэб-праграмы, CLI, планавальніка і воркераў чаргі. Праграмы на PHP 8.2 або 8.3, ці Laravel 11.x або 12.x, павінны заставацца на 1.x. Падтрыманае асяроддзе апісана на старонцы сумяшчальнасці.

Перад абнаўленнем​

  1. Захавайце бягучы код праграмы, composer.json, composer.lock і апублікаваны config/feeds.php. Зрабіце рэзервовую копію табліцы рэгістрацый стужак і выходных файлаў, патрэбных для адкату.
  2. Запішыце ідэнтыфікатары рэгістрацый, назвы, існуючыя slug, расклады і месцы выходных файлаў.
  3. Знайдзіце выклікі feed:generate у скрыптах разгортвання, заданнях cron, ручных раскладах, тэстах і кодзе праграмы.
  4. Згенеруйце тыповыя стужкі і захавайце іх для параўнання.
  5. Падчас разгортвання прыпыніце расклады стужак і завяршыце заданні, якія выконваюцца або чакаюць у чарзе, перад заменай пакета і зменай схемы.

Прымяненне абнаўлення​

composer require dragon-code/laravel-feeds:^2.0 --with-all-dependencies
composer check-platform-reqs

Параўнайце config/feeds.php усталяванага пакета з апублікаванай копіяй праграмы і захавайце налады праграмы. Не публікуйце паўторна з --force: гэта перазапісвае копію.

Даданне slug стужак​

PR #287 змяняе выбар адной стужкі: замест ідэнтыфікатара базы даных выкарыстоўваецца slug, атрыманы праз Str::slug(title).

Калі міграцыя slug пакета яшчэ не выканана, апублікуйце міграцыі:

php artisan vendor:publish --tag=feeds-migrations

Каманда публікуе ўсе файлы міграцый. Праверце апублікаваныя файлы і выдаліце непатрэбныя.

Задайце дату і час у імені файла новай міграцыі add_slug_to_feeds_table так, каб яна ішла пасля фактычнай міграцыі create_feeds_table праграмы і перад усімі міграцыямі рэгістрацыі стужак. Такі парадак гарантуе, што migrate:fresh дадасць слупок slug да запісу рэгістрацый. Затым выканайце міграцыі:

php artisan migrate

Міграцыя дадае слупок slug, які дазваляе NULL, і запаўняе яго з існуючых назваў, уключаючы мякка выдаленыя запісы. Існуючыя назвы і ідэнтыфікатары захоўваюцца.

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

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

Праглядзіце захаваныя значэнні ў php artisan tinker:

app(\DragonCode\LaravelFeed\Queries\FeedQuery::class)
->all()
->get(['id', 'title', 'slug']);

Slug для выбару стужак павінны быць непустымі і адрознівацца сярод усіх нявыдаленых рэгістрацый, уключаючы неактыўныя. Розныя назвы могуць пераўтварыцца ў аднолькавы slug. Неадназначны пошук выклікае MultipleRecordsFoundException; невядомы slug — FeedNotFoundException. Выпраўце калізіі або пустыя slug, абнавіўшы назвы праз мадэль стужкі.

У 2.3.0 PR #334 замяняе перавызначэнне fireModelEvent() на FeedObserver::saving(). Раней slug вылічваўся з сырых атрыбутаў пасля saving, creating і updating, уключаючы ціхае захаванне. Цяпер выкарыстоўваецца назва з улікам accessor у момант выканання saving-observer; ціхае захаванне прапускае яго, а познія апрацоўшчыкі не запускаюць паўторны пералік.

PR #335 дадае праверку $feed->isDirty('slug'): яўна зменены slug нармалізуецца праз Str::slug() і захоўваецца пры бягучым захаванні, нават калі адначасова змяняецца title. FeedQuery::create() прымае яго праз extra: ['slug' => 'Custom Catalog']. Нязменены slug па-ранейшаму вылічваецца з title, таму наступнае звычайнае захаванне можа замяніць раней зададзены карыстальніцкі slug. Прысваенне значэння, якое нармалізуецца ў бягучы slug, не прадухіляе пералік.

Пры абнаўленні з ранейшай версіі 1.x або 2.x праверце яўныя прысваенні slug, ціхія захаванні, accessors назвы, апрацоўшчыкі падзей, частковыя выбаркі, карыстальніцкія casts і масавыя запісы. Пратэстуйце захаваныя title і slug, наступнае звычайнае захаванне, пошук паводле slug і генерацыю паводле раскладу. Усталяванне абнаўлення само не змяняе радкі, але наступнае звычайнае захаванне можа змяніць карыстальніцкі slug або slug з accessor нават без змены назвы. Пры патрэбе абнавіце slug у камандах і раскладах. Прыклады яўнага задання slug, ціхага захавання і працы з апрацоўшчыкамі ёсць у Eloquent.

Замена ID ў выкліках генерацыі​

Для рэгістрацыі з ID 42 і захаванай назвай Products slug пасля міграцыі будзе products.

Да:

php artisan feed:generate 42

Пасля:

php artisan feed:generate products

У 2.x аргумент заўсёды азначае slug; лікавы радок больш не выбірае запіс па ID базы даных. Выклік php artisan feed:generate без аргумента па-ранейшаму апрацоўвае ўсе актыўныя рэгістрацыі. Пры выкарыстанні --target замяніце толькі аргумент рэгістрацыі; ключы мэтаў застаюцца ранейшымі:

php artisan feed:generate products --target=42

Таксама абнавіце ручныя расклады і праграмныя выклікі каманды. Да:

use DragonCode\LaravelFeed\Commands\FeedGenerateCommand;
use Illuminate\Support\Facades\Schedule;

Schedule::command(FeedGenerateCommand::class, [42])->daily();

Пасля:

use DragonCode\LaravelFeed\Commands\FeedGenerateCommand;
use Illuminate\Support\Facades\Schedule;

Schedule::command(FeedGenerateCommand::class, ['products'])->daily();

Захавайце налады абароны ад адначасовага запуску, фонавага выканання і частаты ручнога раскладу. Пры перайменаванні рэгістрацый абнаўляйце slug, пазначаныя ў кодзе. ScheduleFeedHelper::register() аўтаматычна выкарыстоўвае захаваныя slug і захоўвае прывязку блакіровак да рэгістрацыі пры змене яе назвы або выразу cron.

FeedQuery::find(int $id), delete(int $id) і restore(int $id) па-ранейшаму выкарыстоўваюць ID. Для выбару па slug выкарыстоўвайце FeedQuery::findBySlug(string $slug). Гл. генерацыю і расклады.

Праверка створаных назваў​

PR #293 выдаляе суфікс Feed з назваў у новых міграцыях рэгістрацыі або аперацыях разгортвання, створаных камандай make:feed.

Для php artisan make:feed ProductsFeed:

ЗначэннеДаПасля
Створаная назва рэгістрацыіProducts FeedProducts
Slug з гэтай назвыproducts-feedproducts

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

Дакументацыя і распрацоўка пакета​

PR #294 пераймяноўвае старонку дакументацыі Machine Learning у ШІ-агенты. Старонка цяпер даступная па адрасе /ai-agents/; перанакіраванні захоўваюць працу спасылак на папярэдні URL.

PR #297 задае новыя патрабаванні да асяроддзя і захоўвае дакументацыю 1.x. Выберыце версію дакументацыі, якая адпавядае ўсталяванаму пакету; вынікі пошуку і кантэкст LLM абмежаваныя гэтай версіяй.

Асяроддзе распрацоўкі самога пакета пераходзіць на Pest ^5.0 і Testbench ^11.0. Каманды Pest пакета выкарыстоўваюць --tia, а для поўнага паўторнага запуску ў CI, бенчмарках і абнаўленні здымкаў — --fresh. Гэта залежнасці распрацоўкі пакета, а не патрабаванні да тэстаў праграмы.

Праверка​

  • Перастварыце кэш канфігурацыі праграмы, калі ён выкарыстоўваецца, і перазапусціце воркеры чаргі і доўгажывучыя працэсы планавальніка з новым кодам.
  • Пераканайцеся, што кожная рэгістрацыя для выбару мае непусты ўнікальны slug і што каманды і ручныя расклады выкарыстоўваюць яго.
  • Згенеруйце стужку кожнага выкарыстанага фармату; параўнайце колькасць падзеленых файлаў, імёны і тыповы змест з захаваным вынікам 1.x.
  • Праверце выбар мэтаў, аўтаматычныя і ручныя расклады, а таксама генерацыю праз чаргу, калі яны выкарыстоўваюцца.
  • Запусціце тэсты праграмы для карыстальніцкіх мадэляў стужак, пераўтваральнікаў, макрасаў і падкласаў перадусталёвак.
  • Аднавіце расклады стужак і апрацоўку чаргі пасля паспяховай праверкі схемы і генерацыі.

Адкат​

Зноў прыпыніце генерацыю стужак і завяршыце заданні, якія выконваюцца. Аднавіце папярэднія код праграмы, composer.json, composer.lock, канфігурацыю і каманды генерацыі, затым выканайце composer install у сумяшчальным асяроддзі.

Прымяняйце палітыку адкату міграцый праграмы толькі пасля праверкі, ці выкарыстоўвае пакет 1.x, які аднаўляецца, slug. Метад down() міграцыі slug выдаляе толькі гэты слупок; ён не аднаўляе перайменаваныя запісы або выходныя файлы. Пры патрэбе аднавіце змененыя даныя рэгістрацый і выходныя файлы з рэзервовых копій. Перад аднаўленнем генерацыі перастварыце кэш канфігурацыі і перазапусціце воркеры чаргі і працэсы планавальніка.

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