Допоміжні функції ресурсів моделі в Laravel 12.7

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 09 квітня, 2025
Остання версія Laravel v12.7.0 принесла безліч цікавих нововведень, зокрема нові допоміжні методи для ресурсів та метод `whereAttachedTo()` для спрощеного запиту до зв'язаних моделей. Чи готові покращити свій код і дізнатися більше про ці нові можливості? Читайте далі!

Команда Laravel нещодавно випустила версію v12.7.0, що включає дві чудові нові функції: функції-хелпери для моделей та метод whereAttachedTo() в Eloquent.

# Функції-хелпери для моделей

Тім Кунце запропонував хелпери, які роблять створення екземплярів ресурсів плавнішим при використанні моделі або колекції Eloquent:

// До
UserResource::make(User::find(1));
UserResource::collection(User::query()->active()->paginate());
 
// Після
User::find(1)->toResource(UserResource::class);
 
User::query()->active()->paginate()->toResourceCollection(UserResource::class);

Метод toResource() можна також викликати без аргументів, і модель автоматично визначить ім'я ресурсу. Звичайно, ви можете вказати ресурс, але, використовуючи конвенції Laravel, це можна пропустити:

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

Деталі обговорення та реалізації можна знайти у Pull Request #55107.

# Метод whereAttachedTo() у Query Builder

Джекоб Бейкер-Кретцмар запропонував метод whereAttachedTo() для спрощення отримання записів, "прикріплених" до моделі через відношення BelongsToMany:

$tags = Tag::where('created_at', '>', now()->subMonth())->get();
 
// До
$taggedPosts = Post::whereHas('tags', function ($query) use ($tags) {
    $query->whereKey($tags);
}) ->get();
 
// Після
$taggedPosts = Post::whereAttachedTo($tags)->get();
 
// Після з явним ім'ям зв'язку
$taggedPosts = Post::whereAttachedTo($tags, 'tags')->get();

# Зробити клас Uri макросябельним

Подібно до багатьох інших класів, які мають трейти Macroable, Річард ван Баарсен додав цей трейт до класу URI:

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

# Примітки до релізу

Ви можете ознайомитися з повним списком нових функцій та оновлень нижче, а також з різницями між версіями 12.6.0 та 12.7.0 на GitHub. Наступні примітки взято безпосередньо з changelog:

# v12.7.0

Популярні

Logomark Logotype

4 поширені помилки Vite у Laravel

Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Logomark Logotype

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше