TP5 实现多字段的关键词模糊查询
生活随笔
收集整理的這篇文章主要介紹了
TP5 实现多字段的关键词模糊查询
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我們?cè)陂_(kāi)發(fā)中會(huì)遇到關(guān)鍵詞查詢(xún),但是查詢(xún)的關(guān)鍵詞又是多個(gè)字段的。
我們要考慮到的是這幾個(gè)字段LIKE查詢(xún)的時(shí)候,他們的關(guān)系是或關(guān)系,最外層則是和關(guān)系。
1、實(shí)現(xiàn)思想
- 舉例子:我們要查詢(xún)用戶(hù)表中的 1.用戶(hù)名 2.用戶(hù)公司名稱(chēng) 3.用戶(hù)標(biāo)簽,
- 我們另外再帶上 用戶(hù)類(lèi)型為1 的條件。大概的模式如下:
類(lèi)型 =1 AND (用戶(hù)名 LIKE %關(guān)鍵詞% OR 用戶(hù)公司名稱(chēng) LIKE %關(guān)鍵詞% OR 用戶(hù)標(biāo)簽 LIKE %關(guān)鍵詞%)
2、TP5如何實(shí)現(xiàn)
2.1、第一種實(shí)現(xiàn)方法
$keyword = input('keyword') ?? ''; $user = (new UserModel)->where('type', 1)->where(function ($query) use ($keyword) {if ($keyword == '') {$query->whereOr('username', 'like', '%' . $keyword . '%')->whereOr('company_name', 'like', '%' . $keyword . '%')->whereOr('labels', 'like', '%' . $keyword . '%');}})->select();其中子條件中的第一個(gè)條件用where和whereOr效果都是一樣的,但后面兩個(gè)必須用whereOr
2.2、第二種實(shí)現(xiàn)方法
$keyword = input('keyword') ?? ''; $user = (new UserModel)->where('type', 1)->where(function ($query) use ($keyword) {if ($keyword == '') {$query->where("concat(username,company_name,labels) LIKE '%$keyword%' ");}})->select();下面這種用了數(shù)據(jù)庫(kù)方法的concat,目的是將要查詢(xún)的字段拼接在一起與關(guān)鍵詞匹配,也就是或查詢(xún)
- 另外需要注意的是第二種需要用雙引號(hào),關(guān)鍵詞需要用單引號(hào)括起來(lái)。
- 這種查詢(xún)需要整個(gè)條件寫(xiě)在一起,不能單獨(dú)逗號(hào)分隔寫(xiě)
總結(jié)
以上是生活随笔為你收集整理的TP5 实现多字段的关键词模糊查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TP5 使用IN查询时如何限制条数
- 下一篇: TP5 MYSQL按照原来的IN顺序查询