News

Model Resource Helper Functions in Laravel 12.7

Published
Model Resource Helper Functions in Laravel 12.7 image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

The Laravel team released v12.7.0 recently, which includes two excellent new features: resource helper functions for models and a whereAttachedTo() Eloqent method:

Resource Helper Methods for Models

Tim Kunze contributed helper methods that will make generating resource instances fluent using an Eloquent model or collection:

// Before
UserResource::make(User::find(1));
UserResource::collection(User::query()->active()->paginate());
 
// After
User::find(1)->toResource(UserResource::class);
 
User::query()->active()->paginate()->toResourceCollection(UserResource::class);

You can also call toResource() without any arguments, and the model will guess the resource name. Of course, you can be explicit and pass a resource, but when you use Laravel's conventions, it can be omitted:

User::find(1)->toResource();

See Pull Request #55107 for discussion and implementation details.

Eloquent whereAttachedTo() Query Builder Method

Jacob Baker-Kretzmar contributed a whereAttachedTo() Eloquent query builder method to simplify retrieving records "attached" to a model via a BelongsToMany relationship:

$tags = Tag::where('created_at', '>', now()->subMonth())->get();
 
// Before
$taggedPosts = Post::whereHas('tags', function ($query) use ($tags) {
$query->whereKey($tags);
})->get();
 
// After
$taggedPosts = Post::whereAttachedTo($tags)->get();
 
// After with explicit relationship name
$taggedPosts = Post::whereAttachedTo($tags, 'tags')->get();

Make the Uri Class Macroable

Similar to many other classes having the Macroable trait, Richard van Baarsen contributed adding the Macroable trait to the URI class:

use Illuminate\Support\Uri;
 
Uri::macro('docs', fn () => $this->withPath('docs'));
new Uri('https://laravel.com/')->docs(); // https://laravel.com/docs

Release notes

You can see the complete list of new features and updates below and the diff between 12.6.0 and 12.7.0 on GitHub. The following release notes are directly from the changelog:

v12.7.0

Paul Redmond photo

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

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Image Dominant Color and HEIC Support in Laravel 13.24 image

Image Dominant Color and HEIC Support in Laravel 13.24

Read article
Official Laravel Zed Extension: LSP for PHP & Blade image

Official Laravel Zed Extension: LSP for PHP & Blade

Read article
Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD image

Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD

Read article
PhpStorm 2026.2 Released image

PhpStorm 2026.2 Released

Read article
Laravel Doctor: Diagnose Your App With One Artisan Command image

Laravel Doctor: Diagnose Your App With One Artisan Command

Read article
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article