我有下表,這些列
| 名 | 姓 |
|---|---|
| 瑪麗亞 | 埃雷拉 |
| 瑪麗亞 | 德埃雷??拉 |
我想獲取所有包含“herrera”一詞的記錄,為此我執行以下查詢
$query = OrgClient::whereRaw("CONCAT(org_clients.first_name,' ',org_clients.last_name) Ilike ?",["%maria herrera%"])->get();
但是這只回傳 1 行
| 名 | 姓 |
|---|---|
| 瑪麗亞 | 埃雷拉 |
我需要它來回傳兩個,因為兩個名字都有“herrera”這個詞,這怎么可能呢?
uj5u.com熱心網友回復:
添加另一個通配符
["%maria %herrera%"]
uj5u.com熱心網友回復:
以這種方式搜索不是一個好主意,因為函式會忽略索引。
用空格分隔字串并添加多個條件
$words = explode(' ', $searchString);
OrgClient::where(function ($query) use ($words) {
foreach ($words as $w) {
// note we dont use first %
$query->orWhere('org_clients.first_name', 'like', $w . '%');
$query->orWhere('org_clients.last_name', 'like', $w . '%');
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/425324.html
標籤:mysql 拉拉维尔 PostgreSQL
