首頁 >資料庫 >mysql教程 >如何有效率地將變數傳遞到 Laravel 的「whereExists」子查詢?

如何有效率地將變數傳遞到 Laravel 的「whereExists」子查詢?

Barbara Streisand
Barbara Streisand原創
2024-12-16 08:34:12611瀏覽

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

將變數傳遞到 Laravel 的高階Where

在 Laravel 中,透過 whereExists 方法使用子查詢非常簡單。然而,當需要將外部變數納入閉包中時,就會出現挑戰。使用外部變量,例如 $this->city->id,會降低程式碼效率。

解決方案:使用 'use' 關鍵字

為了解決這個問題,use 關鍵字允許將必要的變數從父作用域傳遞到閉包中。這種方法可以方便地在閉包中使用外部變數。

例如:

DB::table('users')
    ->where(function ($query) use ($activated) {
        $query->where('activated', '=', $activated);
    })
    ->get();

PHP 7.4 更新:箭頭函數

PHP 7.4 引入了箭頭函數,這是一種更簡潔的匿名函數形式。這提供了一種更簡化的將變數傳遞到閉包的方法。

這是在PHP 7.4 中使用箭頭函數的範例:

DB::table('users')
    ->where(fn($query) => $query->where('activated', '=', $activated))
    ->get();

與常規語法相比,箭頭函數有以下差異:

  • 他們使用fn 關鍵字而不是函數。
  • 他們捕獲自動執行父作用域中的所有變量,無需使用 use 關鍵字。
  • 它們總是傳回一個值,使得 void 回傳型別宣告不可能。
  • 它們必須省略 return 關鍵字。
  • 它們必須定義為單一表達式,限制多行函數但允許方法連結。

以上是如何有效率地將變數傳遞到 Laravel 的「whereExists」子查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn