在我的laravel项目中,我使用的是存储库模式。我创建了以下方法,从brand表中按名称获取brand。
public function getBrandByName($name){
return $this->model->where('name','=',$name)->first();
}
在brand表中,我有name=“brandone”的记录。但是当我调用区分大小写的方法getbrandbyname('brandone')或getbrandbyname('brandone')时,它都会给出行,但我只需要获取区分大小写的记录。我该怎么做?
谢谢您
2条答案
按热度按时间9wbgstp71#
使用
DB::raw()
方法,然后:希望这有帮助
zwghvu4y2#
区分大小写是在数据库级别控制的。表中使用的排序规则决定了字符的处理方式和顺序。不区分大小写的排序规则将大写和小写字符视为相同的字符。
假设您使用的是mysql,如果您有一个以
_ci
那就意味着你在使用不区分大小写的排序规则。您可以设置要在laravel数据库设置中使用的排序规则:
你可以改变
collation
这里是一个区分大小写的排序规则,一旦用这个新的排序规则创建了表,mysql将区别对待大小写字符。以结尾的排序规则
_cs
或者_bin
通常区分大小写。但请注意,此更改只有在重新迁移数据库(或手动更改排序规则)后才会生效,因为在创建表时设置了排序规则。
尽管可以使用mysql进行区分大小写的比较,但我认为laravel不支持开箱即用的比较,因此必须使用原始查询。