首頁 >資料庫 >mysql教程 >如何將變數傳遞到 Laravel 高階 Where 子句中?

如何將變數傳遞到 Laravel 高階 Where 子句中?

Patricia Arquette
Patricia Arquette原創
2024-12-17 07:01:25851瀏覽

How to Pass Variables into Laravel Advanced Where Clauses?

將變數傳遞到Laravel 進階where 子句

在需要將外部變數傳遞到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中文網其他相關文章!

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