Die Lastmischungsmethode von Laravel bietet eine flexible Möglichkeit, mit eifrigen Lastbeziehungen zu vorhandenen Modellen oder Sammlungen zu befriedigen. Dieser Ansatz verhindert N 1 Abfrageprobleme und ermöglicht es Ihnen, Beziehungen nur bei Bedarf zu laden.
Diese Funktion ist besonders wertvoll, wenn Sie APIs mit optionalem Erstellen oder Dashboards erstellen, in denen verschiedene Abschnitte unterschiedliche Beziehungsdaten erfordern.
<!-- Syntax highlighted by torchlight.dev -->$post->loadMissing(['comments', 'author']); // With constraints $post->loadMissing(['comments' => function($query) { $query->latest()->take(5); }]);
Hier ist ein Beispiel für einen Dashboard -Datenloader:
<!-- Syntax highlighted by torchlight.dev --><?php namespace App\Http\Controllers; use App\Models\Dashboard; use Illuminate\Http\Request; class DashboardController extends Controller { public function show(Request $request, Dashboard $dashboard) { // Load base relationships $dashboard->loadMissing([ 'widgets', 'owner', ]); // Conditionally load additional data 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; } }
Die Lastmangel -Methode lädt intelligent nur die erforderlichen Beziehungen:
<!-- Syntax highlighted by torchlight.dev -->// GET /dashboard/1?section=analytics { "id": 1, "name": "Sales Overview", "widgets": [ { "id": 1, "type": "chart", "viewHistory": [ { "viewed_at": "2024-02-01T10:30:00Z", "views": 150 } ], "interactions": [ { "type": "filter_change", "timestamp": "2024-02-01T11:20:00Z" } ] } ] }
Loadmissing bietet eine effiziente Möglichkeit, das Laden von Beziehungen zu verwalten, Datenbankabfragen zu optimieren und gleichzeitig die Codeflexibilität beizubehalten.
Das obige ist der detaillierte Inhalt vonDynamische Beziehungsbelastung in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!