【发布时间】:2021-05-16 14:34:15
【问题描述】:
我正在使用model::where 将我的数据库转换为小写列数据
这是我的查询:
$restaurants = Restaurant::where('name', 'LIKE', "%".$search."%")->get();
$results = [];
foreach ($restaurants as $r) {
$data = array(
'id' => $r->id,
'label' => $r->name,
'value' => $r->name,
'url' => $r->url,
);
array_push($results, $data);
}
我正在处理这个:
$restaurants = Restaurant::whereRaw('LOWER(name) = ?', [$search])->get();
但返回空结果。
我怎么能做到这一点?在我的数据库中都是大写的,我需要大写或小写搜索
感谢您的帮助
【问题讨论】:
-
您可以在将变量传递给您的语句之前使用strtolower。
-
LOWER(name) LIKE ?, [ "%$search%" ]怎么样?旁注:您是否使用区分大小写的排序规则?这些并不是很常用 -
首先你应该检查数据库的collations,除非你有非常具体的理由来存储区分大小写的数据,否则它们应该设置为不区分大小写,这样做你不需要这种类型的大小写转换。
标签: php laravel eloquent laravel-5.8