Команда Laravel цього тижня випустила версію 12.26.0, яка додала метод withHeartbeat()
до Lazy колекцій, а також метод toPrettyJson()
для колекцій, моделей та інших елементів. Крім того, стартер-кити Laravel для Vue та React тепер містять Wayfinder, що забезпечує безпечний зв'язок між маршрутами Laravel та вашим фронтендом.
Джо Таненбаум оновив стартер-кити Laravel для React і Vue, додавши Laravel Wayfinder. Wayfinder створює безпечний зв'язок між маршрутами Laravel та вашим фронтендом:
import { store, update } from "@/actions/App/Http/Controllers/PostController";
const Page = () => (
);
Джозеф Сільбер запропонував новий метод withHeartbeat()
для LazyCollection
, що дозволяє виконувати колбек через певні інтервали під час лінивої ітерації колекції. Джозеф поділився основним випадком використання цього методу в Запиті на злиття #56477:
У довготривалих завданнях, таких як обробка звітів, може знадобитися утримувати блок, щоб запобігти одночасному виконанню. Проте, якщо код несподівано не звільнить блок, він не повинен залишатися активним вічно. Звичайна стратегія полягає в тому, щоб отримати короткочасний блок і періодично його продовжувати, поки завдання все ще виконується.
Ось приклад, де ми отримуємо блок на 5 хвилин, а потім повторно отримуємо його кожні 4 хвилини (припускаючи, що звіт ніколи не займає повну хвилину для створення):
$lock = Cache::lock('generate-reports', CarbonInterval::minutes(5));
$lock->acquire();
Reports::where('status', 'pending')
->lazy()
->withHeartbeat(CarbonInterval::minutes(4), $lock->reacquire(...))
->each($this->generateReport(...));
$lock->release();
Документацію по колекціях було оновлено, включаючи розділ про метод withHeartbeat()
.
Венделл Адріель запропонував метод toPrettyJson()
, який був реалізований у більшості місць, де існує метод toJson()
. Наприклад, у колекціях, моделях, JSON-ресурсах, пагінаторах, Fluent екземплярах та пакетах повідомлень. Ось приклад з Запиту на злиття #56697 з використанням колекцій:
// До
$collection = collect([1, 2, 3]);
$collection->toJson(JSON_PRETTY_PRINT);
// Після
$collection = collect([1, 2, 3]);
$collection->toPrettyJson();
Ви можете ознайомитися з повним переліком нових функцій та оновлень нижче і переглянути різницю між версіями 12.25.0 і 12.26.0 на GitHub. Наступні примітки були взяті безпосередньо з чангелогу:
Database
під керівництвом @jnoordsij у https://github.com/laravel/framework/pull/56688spliceIntoPosition
, щоб допустити значення string|int
під керівництвом @amirhshokri у https://github.com/laravel/framework/pull/56698array_first
та array_last
під керівництвом @KIKOmanasijev у https://github.com/laravel/framework/pull/56703withHeartbeat
до LazyCollection
під керівництвом @JosephSilber у https://github.com/laravel/framework/pull/56477toPrettyJson
під керівництвом @WendellAdriel у https://github.com/laravel/framework/pull/56697array_first
та array_last
під керівництвом @KIKOmanasijev у https://github.com/laravel/framework/pull/56706MessageLogged
під керівництвом @cosmastech у https://github.com/laravel/framework/pull/56713queue:prune-failed
під керівництвом @amirhshokri у https://github.com/laravel/framework/pull/56732null
у методі BusFake::chain()
під керівництвом @stevebauman у https://github.com/laravel/framework/pull/56750ArrayStore::all()
під керівництвом @cosmastech у https://github.com/laravel/framework/pull/56751$forceWrap
до JsonResource для узгодженого API-відповіді #56724 під керівництвом @achrafAa у https://github.com/laravel/framework/pull/56736