ホームページ > データベース > mysql チュートリアル > Laravel の「whereExists」サブクエリに変数を効率的に渡すにはどうすればよいですか?

Laravel の「whereExists」サブクエリに変数を効率的に渡すにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-16 08:34:12
オリジナル
608 人が閲覧しました

How to Efficiently Pass Variables into Laravel's `whereExists` Subqueries?

Laravel の高度な Wheres に変数を渡す

Laravel では、whereExists メソッドでサブクエリを使用するのは簡単です。ただし、外部変数をクロージャ内に組み込む必要がある場合には課題が発生します。 $this->city->id などの外部変数を使用すると、コードの効率が低下する可能性があります。

解決策: 'use' キーワードを利用する

この問題に対処するために、 use キーワードを使用すると、必要な変数を親スコープからクロージャに渡すことができます。このアプローチにより、クロージャ内で外部変数を便利に使用できるようになります。

例:

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

PHP 7.4 アップデート: Arrow Functions

PHP 7.4 では、匿名関数のより簡潔な形式であるアロー関数が導入されています。これにより、クロージャに変数を渡すさらに簡略化された方法が提供されます。

PHP 7.4 でアロー関数を使用する例を次に示します。

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

通常の構文と比較すると、アロー関数には次の違いがあります。 :

  • 彼らは、代わりに fn キーワードを使用します。 function.
  • これらは、親スコープからすべての変数を自動的にキャプチャし、use キーワードの必要性を排除します。
  • これらは常に値を返すため、void 戻り値の型宣言は不可能になります。
  • これらは return キーワードを省略する必要があります。
  • これらは単一の式として定義する必要があり、複数行の関数は制限されますが、メソッドは許可されます連鎖。

以上がLaravel の「whereExists」サブクエリに変数を効率的に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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