sql - Laravel:查找完全匹配,区分大小写
问题描述
此代码有效,但对大小写不敏感。
public function search(){
if ($search = \Request::get('q')) {
$patrons = Patron::where(function($query) use ($search){
$query->where('barcode','=',"$search")
})->paginate(20);
}else{
$patrons = Patron::latest()->paginate(5);
}
return $patrons;
}
例子
搜索“banana123”不应等于“BaNaNa123”,应返回 0。
我们怎样才能使搜索完全匹配?谢谢你。
解决方案
你必须使用 BINARY
use DB;
...
public function search(){
if ($search = \Request::get('q')) {
$patrons = Patron::where(function($query) use ($search){
$query->whereRaw("BINARY `barcode` = '$search'");
// or
// $query->where(DB::raw("BINARY `barcode`), $search);
})->paginate(20);
}else{
$patrons = Patron::latest()->paginate(5);
}
return $patrons;
}
此外,如果您使用一个 where 而不是将其链接到其他条件,则您不需要在 where 中使用函数。你可以简单地写:
use DB;
...
public function search(){
if ($search = \Request::get('q')) {
$patrons = Patron::where(DB::raw("BINARY `barcode`"), $search)->paginate(20);
}else{
$patrons = Patron::latest()->paginate(5);
}
return $patrons;
}
推荐阅读
- php - 如何将事件直接发布到另一个用户的日历
- php - PHP如何在调用某些内置函数后自动调用自定义函数?
- visual-studio-code - 在 VS Code 中是与连接线相反的命令吗?比如,扩大线?
- r - 无法在 Rstudio 中安装软件包
- javascript - Adonis.js 如何设置通过急切加载加载的对象的键?
- javascript - 为什么 onsubmit 不起作用,如果我在控制台中调用它运行的函数?
- tensorflow - 多标准分类图像
- c# - 从另一个类调用“this”函数。什么是最好的方法?
- android - Ormlite 在数据库中保存带有阿拉伯数字的日期格式
- forms - 跟踪表单转换确认页面 URL 与表单相同