Laravel "where" 子句默认不区分大小写?

Laravel "where" clause is case insensitive by default?

令我惊讶的是,今天 Laravel 8 eloquent WHERE 子句不敏感。

如何让它恢复敏感?

这是我的代码 routes/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"

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

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

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

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