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

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

Susan Sarandon
リリース: 2024-12-24 20:34:10
オリジナル
704 人が閲覧しました

How Can I Pass Variables into Laravel Advanced Where Closures?

Laravel Advanced Where クロージャに変数を渡す

Laravel ドキュメントでは、テーブルを結合するためにクロージャで whereExists を使用する例が提供されています。

DB::table('users')
    ->whereExists(function($query)
    {
        $query->select(DB::raw(1))
              ->from('orders')
              ->whereRaw('orders.user_id = users.id');
    })
    ->get();
ログイン後にコピー

しかし、外部変数をクロージャに渡す必要がある場合はどうすればよいでしょうか。検索クエリとして使用しますか?

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

})
ログイン後にコピー

現在の解決策は、新しいプロパティを作成し、$this を使用してそれにアクセスすることですが、より便利な方法はありますか?

はい、キーワードを使用して親スコープからクロージャに変数を渡します:

DB::table('users')->where(function ($query) use ($activated) {
    $query->where('activated', '=', $activated);
})
->get();
ログイン後にコピー

PHP 7.4 では、より短いアロー関数を使用できます。構文:

DB::table('users')->where(fn($query) => $query->where('activated', '=', $activated))
->get();
ログイン後にコピー

アロー関数と通常のクロージャの主な違い:

  • 関数の代わりに fn キーワード
  • 変数は親スコープから自動的にキャプチャされます
  • アロー関数は常に値を返します
  • Return キーワードは次のとおりである必要があります省略
  • アロー関数は return ステートメントとして単一の式を持たなければなりません

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート