我从前向后发送数据,但是当查询为空时,laravel将其作为字符串“ null”返回
网址:
url=example.com?name=null&phone=000000
$name=$request->input('name');
结果:name='null'
我可以使用 $name=$request->input('name')==='null'? null :$request->input('name');
但是我正在寻找更清洁的解决方案
答案 0 :(得分:1)
Laravel已经拥有一些中间件
App \ Http \ Middleware \ TrimStrings-修剪字符串中的空格 Illuminate \ Foundation \ Http \ Middleware \ ConvertEmptyStringsToNull-将空字符串转换为null的情况,即“”将转换为null。
当您深入研究时,Laravel内部有一个内置类来转换传入的请求,即。 * Illuminate \ Foundation \ Http \ Middleware \ TransformsRequest。
现在,您可以创建自己的中间件来转换传入的请求。
<?php
namespace App\Http\Middlewares;
use Illuminate\Foundation\Http\Middleware\TransformsRequest;
class CastStringifiedNullToNull extends TransformsRequest
{
/**
* Transform the given value.
*
* @param string $key
* @param mixed $value
* @return mixed
*/
protected function transform($key, $value)
{
return is_string($value) && $value === 'null' ? null : $value;
}
}
答案 1 :(得分:0)
您可以这样做,以获得更清洁的解决方案:
$name = $request->input('name') ?? NULL;
我希望这会有所帮助。