ホームページ >バックエンド開発 >PHPチュートリアル >Laravelの動的な関係の読み込み
laravelのロードミッシング方法は、既存のモデルまたはコレクションでの積極的な負荷関係の柔軟な方法を提供します。このアプローチは、必要な場合にのみ関係をロードできるようにしながら、n 1クエリの問題を防ぎます。
この機能は、オプションの含まれているAPIを構築する場合、または異なるセクションが異なる関係データを必要とするダッシュボードで特に価値があります。ダッシュボードデータローダーの例:
<!-- 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; } }
LoadMissingは、コードの柔軟性を維持しながらデータベースクエリを最適化するための効率的な方法を提供します。
以上がLaravelの動的な関係の読み込みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。