將變數傳遞到 Laravel 的高級 Where 閉包
Laravel 的高級 where 函數提供了強大的方法來過濾查詢。但是,您可能會遇到需要將外部變數傳遞到 where 函數中使用的閉包的情況。
範例場景
假設您想要使用外部變數,例如$searchQuery,在where 閉包:
->where('city_id', '=', $this->city->id) ->where(function($query) { $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%') })
使用關鍵字解決方案
您可以使用use關鍵字將必要的變數傳遞到閉包:
DB::table('users')->where(function ($query) use ($searchQuery) { $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%') })->get();
PHP 7.4 箭頭函數(更新)
在 PHP 7.4及更高版本中,可以使用箭頭函數來更簡潔語法:
DB::table('users')->where(fn($query) => $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%'))->get();
與常規匿名函數不同,箭頭函數會自動從父作用域捕獲變量,並且不允許透過使用明確列出。但是,它們必須有一個 return 語句,並且不能包含多行程式碼。
以上是如何將變數傳遞給 Laravel 的高階Where閉包?的詳細內容。更多資訊請關注PHP中文網其他相關文章!