Команда Laravel випустила версію 12.3.0, яка включає новий тип кодування JSON Unicode, перевірку статусу збережених даних в команді about
, а також нативну підтримку типів JSON і JSONB в схемах SQLite та інші вдосконалення.
@fuwasegu запропонував новий тип кодування json:unicode
для атрибутів Eloquent, що забезпечує кодування JSON з використанням JSON_UNESCAPED_UNICODE
:
protected $casts = [
'data' => 'json:unicode',
];
Докладний опис Pull Request #54992 пояснює, коли краще використовувати цей тип, ніж звичайний json
:
Цей [тип] полегшує збереження та отримання JSON-даних без Unicode Escape (
\uXXXX
), що особливо корисно для застосунків, які обробляють неASCII символи, такі як японські, китайські або емодзі.Зараз тип
json
в Eloquent за замовчуванням кодує символи Unicode, що ускладнює читання JSON-атрибутів та потребує ручного декодування. Розробники часто обходять це, переозначаючи accessor/mutator або використовуючи json_encode() вручну...
Adam Patterson додав новий розділ до команди artisan about
, що показує статус посилань на файлові системи. Наприклад, в конфігураційному файлі filesystem.php
, де вказані посилання:
// config/filesystem.php
return [
'links' => [
public_path('storage') => storage_path('app/public'),
public_path('images') => storage_path('app/images'),
],
];
Команда artisan about
тепер відображає статус цих посилань:
$ php artisan about
Storage
public/images ................................................... NOT LINKED
public/storage .................................................. LINKED
@fuwasegu також додав підтримку типів JSON і JSONB в схемах SQLite:
SQLite підтримує тип даних JSON як вбудовану функцію з версії 3.38.0, але до цього користувачам потрібно було встановлювати розширення. Нативна підтримка типу JSONB з'явилася з версії 3.45.
Оскільки Laravel 12 підтримує SQLite версії 3.26.0 і вище, не слід вважати, що підтримка JSON/JSONB завжди доступна. Хоча
Query\Grammars\SQLiteGrammar
включає підтримку функцій JSON,Schema\Grammars\SQLiteGrammar
не пропонує цю опцію. Цей Pull Request дозволяє встановлювати конфігурацію з налаштування бази даних для використання нативних JSON-колонок при визначенні схеми.
Ось варіанти конфігурації:
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DATABASE_URL'),
...,
'use_native_json' => true,
'use_native_jsonb' => true,
],
Цей Pull Request не змінює значення за замовчуванням, але якщо хочете використовувати нативні JSON або JSONB колонки, ви можете активувати ці опції у вашому з'єднанні. Деталі реалізації можна знайти у Pull Request #54991.
Thierry Parent додав підтримку "унікальних нулів не є різними" для PostgreSQL (>= 15
) під час створення унікальних індексів:
Відтепер доступний новий метод для визначення індексу
nullsNotDistinct()
(додаткові приклади можна знайти в юніт-тестах) при використанні драйвера бази данихpostgres
(точніше, при використанні граматики схеми Postgres).
Повний список нових функцій та оновлень можна переглянути нижче, а також порівняти зміни між 12.2.0 та 12.3.0 на GitHub. Наступні примітки до випуску безпосередньо з журналу змін:
@param-closure-this
від @kayw-geek у Pull Request #55002PendingRequest
у post
, patch
, put
, delete
від @cosmastech у Pull Request #54998about
від @adampatterson у Pull Request #54949LogManager::configurationFor()
від @cosmastech у Pull Request #55016toKilobytes
для обробки пробілів та регістронезалежних одиниць від @alikhosravidev у Pull Request #55019asJson
в HasAttributes.php
, що була нещодавно внесена від @AndrewMast у Pull Request #55017aliasedPivotColumns
від @browner12 у Pull Request #55055date_format
від @AndrewMast у Pull Request #55052$this
для ланцюга від @browner12 у Pull Request #55060new Collection
замість collect()
від @browner12 у Pull Request #55059using
від @browner12 у Pull Request #55053