Метод 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, та які переваги це може принести у вашому проєкті!
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом