Laravel 10.15: методы построения необработанных SQL-запросов, посекундное выполнение задач и многое другое
Laravel 10.15: Sub-minute Task Scheduling, Raw SQL Query Builder Methods и многое другое


Выход нового Laravel 10.15

Команда разработчиков Laravel сообщила об обновлении версии 10.15, в которой появились функции посекундного расписания выполнения задач, методы построения необработанных SQL-запросов, возможность создания исключения HTTP из view и многое другое.

Посекундное выполнение задач в Laravel 10.15

Джесс Арчер внес вклад в разработку Sub-minute Scheduling, который предоставляет новые возможности частоты при планировании заданий:

$schedule->job(new ExampleJob)->everySecond();
$schedule->job(new ExampleJob)->everyTwoSeconds();
$schedule->job(new ExampleJob)->everyFiveSeconds();
$schedule->job(new ExampleJob)->everyTenSeconds();
$schedule->job(new ExampleJob)->everyFifteenSeconds();
$schedule->job(new ExampleJob)->everyTwentySeconds();
$schedule->job(new ExampleJob)->everyThirtySeconds();

Ранее предлагалась максимальная частота - каждую минуту без использования пакета сообщества. Это замечательное дополнение для тех, кому необходимо запускать задачи по расписанию с большей частотой. Подробности, предостережения и обсуждение этой возможности смотрите в Pull Request #47279!

В конструкторы запросов Laravel добавлены методы Raw SQL

Ранее сообщалось, что в Laravel 10 появится функция вывода необработанного SQL со связями (Raw Query Output With Bindings), которая была выпущена в версии 10.15! Tobias Petry предоставил эту возможность, которая включает в себя три метода, позволяющие получить необработанный SQL с привязками в конструкторе запросов:

$query->ddRawSql(); // Вывод SQL-строки через dd()
$query->dumpRawSql(); // Вывод SQL-строки через dump()
$query->toRawSql(); // Вывод необработанной sql-строки

Поддержка Laravel встроенных вложений для "уведомлений" в формате markdown

Nuno Maduro внес вклад в поддержку встроенных вложений в пометках уведомлений. Подробности см. в Pull Request #47643 и Pull Request #47603.

Метод DB::getRawQueryLog() в Laravel

@Fuwasegu предоставил метод getRawQueryLog(), который работает аналогично DB::getQueryLog():

DB::enableQueryLog();
 
// ... выполнение запросов
 
$logs = DB::getRawQueryLog();
/*
[
  [
    "raw_query" => "select * from "users" where "id" in (3, 6, 8)"
    "time" => 4.06
  ]
]
*/

Строковый метод isUrl() в Laravel

Graham Campbell предоставил метод isUrl() для проверки того, является ли строка действительным url. Он использует логику метода валидатора validateUrl(), который теперь вызывает новый метод:

use Illuminate\Support\Str;
 
Str::isUrl('https://example.com'); // true
Str::isUrl('ms-officeapp://launchapp'); // true
Str::isUrl('invalid://launchapp'); // false
Str::isUrl('//example.com'); // false

Разрешение на вызов HTTP-исключений во вьюхах Laravel

Nuno Maduro ещё добавил возможность бросать HTTP-исключения из представлений:

@php
    if (! Gate::check('view-books')) {
        abort(403);
    }
 
    $books = auth()->user()->books;
@endphp
 
@foreach ($books as $book)
    <div>
        {{ $book->title }}
    </div>
@endforeach

Примечания к выпуску Laravel v10.15.0

Полный список новых возможностей и обновлений Laravel приведен ниже, а разница между версиями 10.14.0 и 10.15.0 размещена на GitHub. Следующие примечания к выпуску взяты непосредственно из журнала изменений:

  • [10.x] Изменение типа возврата getPrivateToken в AblyBroadcaster. Автор @milwad-dev в https://github.com/laravel/framework/pull/47602
  • [10.x] Добавление toRawSql, dumpRawSql() и ddRawSql() в Query Builders. Автор @tpetry в https://github.com/laravel/framework/pull/47507
  • [10.x] Исправление того, что recorderHandler не записывал изменения, сделанные промежуточным ПО. Автор @j3j5 в https://github.com/laravel/framework/pull/47614
  • Передача очереди из Mailable в задание SendQueuedMailable. Автор @Tarpsvo в https://github.com/laravel/framework/pull/47612
  • [10.x] Посекундное расписание выполнения задач. Автор @jessarcher в https://github.com/laravel/framework/pull/47279
  • [10.x] Исправление неудачных тестов, работающих на DynamoDB Local 2.0.0. Автор @crynobone в https://github.com/laravel/framework/pull/47653
  • [10.x] Разрешение обратного вызова сброса пароля для изменения результата. Автор @GrahamCampbell в https://github.com/laravel/framework/pull/47641
  • Забыть о коллекциях. Автор @joelbutcher в https://github.com/laravel/framework/pull/47637
  • [10.x] Не применять глобальные диапазоны при увеличении/уменьшении существующей модели. Автор @cosmastech в https://github.com/laravel/framework/pull/47629
  • [10.x] Добавлена поддержка встроенных вложений для почтовых файлов с пометкой "notifications". Автор @nunomaduro в https://github.com/laravel/framework/pull/47643
  • Использование ассоциаций для подсчета исходящих почтовых отправлений. Автор @jasonmccreary в https://github.com/laravel/framework/pull/47655
  • [10.x] Добавление метода getRawQueryLog(). Автор @fuwasegu в https://github.com/laravel/framework/pull/47623
  • [10.x] Исправление типа возврата Storage::cloud(). Автор @tattali в https://github.com/laravel/framework/pull/47664
  • [10.x] Добавление isUrl в класс Str и использование его из валидатора. Автор @GrahamCampbell в https://github.com/laravel/framework/pull/47688
  • [10.x] Удаление ненужного вызова для включения трассировки стека. Автор @HazzazBinFaiz в https://github.com/laravel/framework/pull/47687
  • [10.x] Добиться того, чтобы Vite выбрасывал новое исключение ManifestNotFoundException. Автор @innocenzi в https://github.com/laravel/framework/pull/47681
  • [10.x] Переместить класс из файловой логики в ядре консоли в специальный метод. Автор @CalebDW в https://github.com/laravel/framework/pull/47665
  • [10.x] Обрезка событий начала и окончания работы модели диспетчеризации. Автор @ziadoz в https://github.com/laravel/framework/pull/47669
  • [10.x] Обновление DatabaseRule для обработки Enums для простого выражения where. Автор @CalebDW в https://github.com/laravel/framework/pull/47679
  • [10.x] Добавление помощника data_forget. Автор @PhiloNL в https://github.com/laravel/framework/pull/47618
  • [10.x] Дополнительные тесты для isUrl к Str. Автор @michaelnabil230 в https://github.com/laravel/framework/pull/47690
  • [10.x] Дополнение isUrl к строковой версии Stringable. Автор @michaelnabil230 в https://github.com/laravel/framework/pull/47689
  • [10.x] Исправление типа возврата для отсутствующего конфига. Автор @sfreytag в https://github.com/laravel/framework/pull/47702
  • [10.x] Исправление параллельного тестирования без подключения к базе данных. Автор @deleugpn в https://github.com/laravel/framework/pull/47705
  • [10.x] Улучшения в тестировании. Автор @crynobone в https://github.com/laravel/framework/pull/47709
  • [10.x] Возможность создания исключений HTTP для представлений. Автор @nunomaduro в https://github.com/laravel/framework/pull/47714

Перевод с английского официальных новостей Laravel:
https://laravel-news.com/laravel-10-15-0

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню