首頁 >資料庫 >mysql教程 >如何將變數傳遞給 Laravel 的高階Where閉包?

如何將變數傳遞給 Laravel 的高階Where閉包?

Linda Hamilton
Linda Hamilton原創
2024-12-20 22:04:12161瀏覽

How Can I Pass Variables to Laravel's Advanced Where Closures?

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

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