要点:
- クエリーのスコープは、Eloquent クエリーの制約をカプセル化することで、コードの読みやすさと再利用性を向上させる。
- ローカル クエリー スコープは手動で適用され、グローバル クエリー スコープはデフォルトでモデル クエリーのすべてに適用される。
- グローバル クエリー スコープは、フィルタリングの一貫性を確保するために、制約を忘れることを防ぐ。
- `scopePublished` と `scopeNotPublished` は、ブログ ポストの出版状況に基づいてフィルタリングするためのローカル クエリー スコープの例。
- `TeamScope` は、マルチテナント アプリケーションでチーム ID によるフィルタリングを適用するグローバル クエリー スコープの例。
- グローバル スコープは、モデル自身の `booted` メソッドで `ScopedBy` 属性か `addGlobalScope` メソッドを使用して適用できる。
- 無名のグローバル スコープは、モデル自身でスコープを定義する別の方法を提供する。
- `withoutGlobalScopes` により、特定のクエリーでグローバル スコープを無視することができる。
- クエリー スコープは、複雑な制約の再利用に関するコードの維持とエラーのリスクを低減する。
laravel-news.com
Learn to master Query Scopes in Laravel
