News

Laravel 8.79 Released

Published
Laravel 8.79 Released image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

The Laravel team released 8.79 with a full-text search for MySQL and PostgreSQL, new Stringable methods, and the latest changes in the v8.x branch.

Paginator onLastPage() Method

Johan van Helden contributed a onLastPage() method to the Paginator which helps clarify logic around the last page:

@if ($paginator->onFirstPage())
{{-- ... --}}
@endif
 
{{-- Before --}}
@if (!$paginator->hasMorePages())
{{-- ... --}}
@endif
 
{{-- After --}}
@if ($paginator->onLastPage())
{{-- ... --}}
@endif

Allow Method Typed Variadic Dependencies

Léo Colombaro contributed the ability to use variadic for dependency injection when calling a callable. Here's an example from the pull request:

$app->bind(Filter::class, function ($app) {
return [
$app->make(NullFilter::class),
$app->make(ProfanityFilter::class),
$app->make(TooLongFilter::class),
];
});
 
$app->call(function (Logger $logger, Filter ...$filters) {
// ...
});

Implement Full-Text Search for MySQL and PostgreSQL

Dries Vints contributed natural language full-text search for MySQL and PostgreSQL. Here's some examples taken from Pull Request #40129:

Schema::create('articles', function (Blueprint $table) {
$table->id('id');
$table->string('title', 200);
$table->text('body');
$table->fulltext(['title', 'body']);
});
 
// Search for "databases" in the title and body fulltext index...
$articles = DB::table('articles')
->whereFulltext(['title', 'body'], 'database')
->get();
 
// Search for "databases" in the title and body fulltext index with boolean mode...
$articles = DB::table('articles')
->whereFulltext(['title', 'body'], 'database', ['mode' => 'boolean'])
->get();
 
// Search for "databases" in the title and body fulltext index with an expanded query...
$articles = DB::table('articles')
->whereFulltext(['title', 'body'], 'database', ['expanded' => true])
->get();

New Stringable Methods

Travis Elkins contributed two Stringable methods, whenContains() and whenContainsAll():

// Before
$stringable = Str::of('some important announcement');
 
if ($stringable->contains(['important', 'emergency'])) {
$stringable->upper();
}
 
return (string) $stringable;
 
// After
return (string) Str::of('some important announcement')
->whenContains(
['important', 'emergency'],
fn (Stringable $stringable) => $stringable->upper(),
);
}

The whenContainsAll() method would work the same way. However, the string must contain all expected matches to make the condition true that triggers the closure call.

Travis Elkins also contributed other Stringable methods in Pull Request #40320:

  • endsWith()
  • exactly()
  • is()
  • isAscii()
  • isUuid()
  • test()
  • startsWith()

Release Notes

You can see the complete list of new features and updates below and the diff between 8.78.0 and 8.79.0 on GitHub. The following release notes are directly from the v8.79.0 release notes:

v8.79.0

Added

  • Added onLastPage method to the Paginator ( #40265 )
  • Allow method typed variadics dependencies ( #40255 )
  • Added ### ably/ably-php to composer.json to suggest ( #40277 )
  • Implement Full-Text Search for MySQL & PostgreSQL ( #40129 )
  • Added whenContains and whenContainsAll to Stringable ( #40285 )
  • Support action_level configuration in LogManager ( #40305 )
  • Added whenEndsWith(), whenExactly(), whenStartsWith(), etc to Stringable ( #40320 )
  • Makes it easy to add additional options to PendingBatch ( #40333 )
  • Added method to MigrationsStarted/MigrationEnded events ( #40334 )

Fixed

  • Fixed failover mailer when used with Mailgun & SES mailers ( #40254 )
  • Fixed digits_between with fractions ( #40278 )
  • Fixed cursor pagination with HasManyThrough ( #40300 )
  • Fixed virtual attributes ( 29a6692 )
  • Fixed timezone option in ### schedule:list command ( #40304 )
  • Fixed Doctrine type mappings creating too many connections ( #40303 )
  • Fixed of resolving Blueprint class out of the container ( #40307 )
  • Handle type mismatch in the enum validation rule ( #40362 )

Changed

  • Automatically add event description when scheduling a command ( #40286 )
  • Update the Pluralizer Inflector instanciator ( #40336 )
Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article