首页 > 解决方案 > Laravel“where”子句默认不区分大小写?

问题描述

今天令人惊讶的是,我很震惊 Laravel 8 雄辩的 WHERE 子句不敏感。

我怎样才能让它再次敏感?

这是我的代码路由/web.php

Route::get('/{slang}', function($slang) {
    $post = App\Models\Post::where('slang', $slang)->first();
    if( ! isset( $post->id ) ) return redirect('/');
    return 
response()->json(['content' => 'Welcome to ['. $post->slang.']', 'code'=>200, 'var'=>$slang] );
});

结果

content:"Welcome to [DAL51]"
code:   200
var:    "dAl51"

标签: mysqllaraveleloquentlaravel-8

解决方案


您需要使用DB::raw(),例如:

App\Models\Post::where(DB::raw('BINARY slang'), $slang)->first();

或者,您可以使用whereRaw()方法:

App\Models\Post::whereRaw('BINARY slang=?', $slang)->first();

推荐阅读