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();
令我惊讶的是,今天 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();