在laravel中有个中间件,叫ConvertEmptyStringsToNull,他自动把表单里允许为空的字段在提交后转换为null,这就导致查询的时候使用where条件时出现问题,如where(‘filed’,’=’,”)查不到null的记录,而where(‘field’,’=’,null)也查不到空字符的记录。
解决办法:
注销Kernel.php(app/Http/Kernel.php)中的ConvertEmptyStringsToNull中间件,然后把已经在数据库中的null值置空。
protected $middleware = [ // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, \Illuminate\Http\Middleware\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, // \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, //注销这行即可 ];