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