Команда Laravel випустила версію 12.3.0, яка включає новий тип кодування JSON Unicode, перевірку статусу збережених даних в команді about, а також нативну підтримку типів JSON і JSONB в схемах SQLite та інші вдосконалення.
# Тип кодування JSON Unicode
@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() вручну...
# Додано перевірку "Storage Linked" до команди about
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
# Нативні типи JSON і JSONB у схемі SQLite
@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.
# Підтримка "унікальних нулів не є різними" у PostgreSQL
Thierry Parent додав підтримку "унікальних нулів не є різними" для PostgreSQL (>= 15) під час створення унікальних індексів:
Відтепер доступний новий метод для визначення індексу
nullsNotDistinct()(додаткові приклади можна знайти в юніт-тестах) при використанні драйвера бази данихpostgres(точніше, при використанні граматики схеми Postgres).
# Примітки до випуску
Повний список нових функцій та оновлень можна переглянути нижче, а також порівняти зміни між 12.2.0 та 12.3.0 на GitHub. Наступні примітки до випуску безпосередньо з журналу змін:
# v12.3.0
- [12.x] виправлено помилку 1010 від @mihaileu у Pull Request #55008
- Додано відсутню подію 'trashed' до getObservablesEvents() від @duemti у Pull Request #55004
- [12.x] Поліпшено PHPDoc для класів Manager з
@param-closure-thisвід @kayw-geek у Pull Request #55002 - [12.x] Виправлено типи для
PendingRequestуpost,patch,put,deleteвід @cosmastech у Pull Request #54998 - [12.x] Додано тести для не протестованих методів у LazyCollection від @mohammadrasoulasghari у Pull Request #54996
- [12.x] виправлення відступів від @browner12 у Pull Request #54995
- [12.x] застосовано фінальні виправлення стилю Pint від @browner12 у Pull Request #55014
- Покращено тести валідації: додано тест для виявлення імені з'єднання в правилі Unique від @alikhosravidev у Pull Request #54993
- [12.x] Додано json:unicode cast для підтримки кодування JSON_UNESCAPED_UNICODE від @fuwasegu у Pull Request #54992
- [12.x] Додано "Storage Linked" до команди
aboutвід @adampatterson у Pull Request #54949 - [12.x] Додано підтримку нативних типів JSON/JSONB у схемі SQLite від @fuwasegu у Pull Request #54991
- [12.x] Виправлено тип для
LogManager::configurationFor()від @cosmastech у Pull Request #55016 - [12.x] Додано відсутні тести для методів LazyCollection від @mohammadrasoulasghari у Pull Request #55022
- [12.x] Рефакторинг: структурні поліпшення для покращення зрозумілості від @AhmedAlaa4611 у Pull Request #55018
- Покращено
toKilobytesдля обробки пробілів та регістронезалежних одиниць від @alikhosravidev у Pull Request #55019 - [12.x] Виправлено помилку у виклику
asJsonвHasAttributes.php, що була нещодавно внесена від @AndrewMast у Pull Request #55017 - [12.x] повторне застосування змін стилю Pint від @browner12 у Pull Request #55015
- Додано тест валідації для методів forEach з нульовими та пустими масивами від @alikhosravidev у Pull Request #55047
- [12.x] Типи: EnumeratesValues Sum від @liamduckett у Pull Request #55044
- [12.x] Забезпечити послідовне форматування в згенерованих викликаємих класах від @AhmedAlaa4611 у Pull Request #55034
- Додано тип елемента до повернутого масиву у файловій системі від @AJenbo у Pull Request #55031
- [12.x] Додано підтримку "унікальних нулів не різних" у PostgreSQL від @thierry2015 у Pull Request #55025
- [12.x] стандартизація багаторядкових тернарів від @browner12 у Pull Request #55056
- [12.x] поліпшено читабельність для
aliasedPivotColumnsвід @browner12 у Pull Request #55055 - [12.x] видалено індикатор прогресу з виходу PHPStan від @browner12 у Pull Request #55054
- [12.x] Виправлено, як будівельник правила дати обробляє
date_formatвід @AndrewMast у Pull Request #55052 - Додано шифрування SSL і підтримку з'єднання з MySQL від @mdiktushar у Pull Request #55048
- Відмінено "додавання шифрування SSL і підтримки з'єднання з MySQL" від @taylorotwell у Pull Request #55057
- Переконайтеся, що властивість черги є nullable від @timacdonald у Pull Request #55058
- [12.x] повернути
$thisдля ланцюга від @browner12 у Pull Request #55060 - [12.x] надавати перевагу
new Collectionзамістьcollect()від @browner12 у Pull Request #55059 - [12.x] використання типу "class-string" для моделі підключення
usingвід @browner12 у Pull Request #55053 - [12.x] багаторядковий ланцюг на колекціях від @browner12 у Pull Request #55061