Kaedah loadmenting Laravel menyediakan cara yang fleksibel untuk hubungan beban yang bersemangat pada model atau koleksi sedia ada. Pendekatan ini menghalang masalah pertanyaan n 1 sambil membolehkan anda memuatkan hubungan hanya apabila perlu.
Ciri ini sangat berharga apabila membina API dengan pilihan termasuk atau papan pemuka di mana bahagian yang berbeza memerlukan data hubungan yang berbeza.
<!-- Syntax highlighted by torchlight.dev -->$post->loadMissing(['comments', 'author']); // With constraints $post->loadMissing(['comments' => function($query) { $query->latest()->take(5); }]);
Berikut adalah contoh pemuat data papan pemuka:
<!-- 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; } }
Kaedah Loadmissing dengan bijak hanya memuatkan hubungan yang diperlukan:
<!-- 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 menyediakan cara yang efisien untuk menguruskan pemuatan hubungan, mengoptimumkan pertanyaan pangkalan data sambil mengekalkan fleksibiliti kod.
Atas ialah kandungan terperinci Memuatkan hubungan dinamik di Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!