>
<!-- Syntax highlighted by torchlight.dev -->$post->loadMissing(['comments', 'author']); // With constraints $post->loadMissing(['comments' => function($query) { $query->latest()->take(5); }]);
。
<!-- 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; } }
<!-- 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" } ] } ] }
>加載提供了一種管理關係加載,優化數據庫查詢的有效方法,同時保持代碼靈活性。
以上是Laravel的動態關係加載的詳細內容。更多資訊請關注PHP中文網其他相關文章!