Метод loadMissing у Laravel забезпечує гнучке завантаження відносин для існуючих моделей або колекцій. Цей підхід дозволяє уникнути проблеми з N+1 запитами та завантажувати відносини лише за необхідності.
Ця функція особливо корисна при створенні API з опціональними включеннями або інформаційних панелей, де різні секції потребують різних даних про відносини.
$post->loadMissing(['comments', 'author']);
// З обмеженнями
$post->loadMissing(['comments' => function($query) {
$query->latest()->take(5);
}]);
Ось приклад завантажувача даних для інформаційної панелі:
<?php
namespace App\Http\Controllers;
use App\Models\Dashboard;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
public function show(Request $request, Dashboard $dashboard)
{
// Завантаження основних відносин
$dashboard->loadMissing([
'widgets',
'owner',
]);
// Умовне завантаження додаткових даних
if ($request->section === 'analytics') {
$dashboard->loadMissing([
'widgets.viewHistory' => function($query) {
$query->whereBetween('viewed_at', [
now()->subDays(30),
now()
]);
},
'widgets.interactions'
]);
}
if ($request->section === 'sharing') {
$dashboard->loadMissing([
'sharedUsers',
'shareLinks' => function($query) {
$query->where('expires_at', '>', now());
}
]);
}
return $dashboard;
}
}
Метод loadMissing розумно завантажує лише необхідні відносини:
// GET /dashboard/1?section=analytics
{
"id": 1,
"name": "Огляд продажів",
"widgets": [
{
"id": 1,
"type": "графік",
"viewHistory": [
{
"viewed_at": "2024-02-01T10:30:00Z",
"views": 150
}
],
"interactions": [
{
"type": "зміна_фільтра",
"timestamp": "2024-02-01T11:20:00Z"
}
]
}
]
}
loadMissing забезпечує ефективний спосіб управління завантаженням відносин, оптимізуючи запити до бази даних і зберігаючи гнучкість коду
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!
Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!
Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!