我不会在雄辩的模型中搜索不区分大小写的内容。 现在,我已经习惯了
Model::where($column, 'LIKE', '%' . $value . '%' );
但这是区分大小写的。我该如何解决呢?
我也找到了这篇帖子How can I search (case-insensitive) in a column using LIKE wildcard?,但是我不能在雄辩的模型中使用它
答案 0 :(得分:6)
没有看到这个解决方案。所以我把这个贴在这里。
DB::table('products')
->select('productid')
->where(DB::raw('lower(product)'), 'like', '%' . strtolower($searchword) . '%')
->get();
答案 1 :(得分:5)
实际上,您不需要使用UPPER
,只需使用ilike
作为比较器,它将进行区分大小写的比较。
Model::where('column', 'ilike', '%' . $value . '%')
您要做需要使用%
符号来表示您要搜索的子字符串。
答案 2 :(得分:2)
Laravel雄辩的搜索不区分大小写,查询中不需要ilike,上,下函数。
只需使用:
Controller::query()
->where('column1_name', 'LIKE', "%{$search}%")
->orWhere('column2_name', 'LIKE', "%{$search}%")
->orWhere('column3_name', 'LIKE', "%{$search}%")
->get();
如果您有多个要查询的表字段,则orWhere部分为
答案 3 :(得分:1)
您对表格的排序规则是什么?
这是数据库中排序规则的特殊性,请尝试使用 latin_general_ci 或 latin_gerneral_cs ,因为它们是不区分大小写的。
但是,如果您尝试通过示例在 utf8_bin 中获得此权限,则由于该排序规则很敏感,因此它将无法运行。
所有示例都在MySql下运行。
答案 4 :(得分:1)
在这种情况下,我建议使用上层功能
Model::whereRaw("UPPER('.$column.') LIKE '%'". strtoupper($value)."'%'");
像这样
答案 5 :(得分:1)
这应该有效。
替换<div class="item" id="su1" onclick="change_id()"></div>
<div class="item" id="su2" onclick="change_id()"></div>
<div class="item" id="su3" onclick="change_id()"></div>
<div class="number" id='num1' onclick="put_value()">1</div>
<div class="number" id='num2' onclick="put_value()">2</div>
<div class="number" id='num3' onclick="put_value()">3</div>
和column
。
$text
答案 6 :(得分:1)
您不必将关键字和 DB 值都转换为相同的大小写(UPPER 或 LOWER)。相反,您可以简单地指定“iLIKE”而不是“LIKE”。以下示例返回基于 category_id 的模型数据列表,重要的是关键字是否匹配名字或姓氏:
$transactions = Transaction::where('category_id', $category_id);
$transactions = $transactions->where(function ($q) use($keyword) {
$q->where('firstName', 'iLIKE', '%'.$keyword.'%');
$q->orwhere('lastName', 'LIKE', '%'.$keyword.'%');
});
答案 7 :(得分:0)
已使用iLike
运算符回答了此问题,不区分大小写,请参见
Laravel Eloquent Ignore Casing
或者出于娱乐目的,不建议这样做。
// prepare two variants of the same value ?
// first to uppercase
// second to lowercase
$valueUp = strtoupper($value);
$valueLower = strtolower($value);
Model::where($column, 'LIKE', '%' . ($valueUp || $valueLower) . '%' );
没有测试,但这就是赢得比赛的想法。