ユーザー定義を使用して結果をフィルタリングする場合など、Laravel の高度な Where 句に外部変数を渡す必要がある状況検索基準を使用する場合、ドキュメントで提供されているデフォルトの構文は使用できない場合があります。
幸いなことに、 use キーワードを使用したより便利な解決策があり、これを使用すると、親スコープから where 句を定義するクロージャに変数をキャプチャできます。例:
DB::table('users')->where(function($query) use ($searchQuery) { $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%'); });
この例では、$searchQuery 変数が親スコープからクロージャに渡され、where 句内で使用できます。 use キーワードを使用すると、変数が参照によってキャプチャされ、クロージャ内でアクセスして変更できるようになります。
あるいは、PHP 7.4 のアロー関数の導入により、同じ結果を達成できます。より簡潔な構文:
DB::table('users')->where(fn($query) => $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%'));
アロー関数は親スコープから変数を自動的に取得するため、use を使用して変数を明示的にリストする必要がなくなります。ただし、アロー関数は常に値を返すため、return キーワードを省略する必要があることに注意することが重要です。
以上がLaravelの高度なWhere句に変数を渡す方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。