ホームページ >データベース >mysql チュートリアル >Laravel の高度な Where クロージャに変数を渡すにはどうすればよいですか?

Laravel の高度な Where クロージャに変数を渡すにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-20 22:04:12164ブラウズ

How Can I Pass Variables to Laravel's Advanced Where Closures?

Laravel の高度な Where クロージャに変数を渡す

Laravel の高度な where 関数は、クエリをフィルタリングする強力な方法を提供します。ただし、where 関数で使用されるクロージャに外部変数を渡す必要がある状況が発生する場合があります。

シナリオ例

外部変数を使用するとします。 $searchQuery など、where クロージャ内:

->where('city_id', '=', $this->city->id)
->where(function($query)
    {
        $query->where('name', 'LIKE', '%'.$searchQuery.'%')
        ->orWhere('address', 'LIKE', '%'.$searchQuery.'%')

    })

キーワードを使用解決策

use キーワードを使用して必要な変数をクロージャに渡すことができます:

DB::table('users')->where(function ($query) use ($searchQuery) {
    $query->where('name', 'LIKE', '%'.$searchQuery.'%')
    ->orWhere('address', 'LIKE', '%'.$searchQuery.'%')
})->get();

PHP 7.4 Arrow Function (Update)

PHP 7.4 以降では、より簡潔にアロー関数を使用できます。構文:

DB::table('users')->where(fn($query) => $query->where('name', 'LIKE', '%'.$searchQuery.'%')
->orWhere('address', 'LIKE', '%'.$searchQuery.'%'))->get();

通常の匿名関数とは異なり、アロー関数は親スコープから変数を自動的に取得し、使用による明示的なリストを許可しません。ただし、return ステートメントは 1 つだけ必要であり、複数行のコードを含めることはできません。

以上がLaravel の高度な Where クロージャに変数を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。