查询字符串以字符串形式返回null

时间:2020-06-17 14:05:17

标签: javascript laravel

我从前向后发送数据,但是当查询为空时,laravel将其作为字符串“ null”返回

网址: url=example.com?name=null&phone=000000

$name=$request->input('name'); 结果:name='null'

我可以使用 $name=$request->input('name')==='null'? null :$request->input('name');
但是我正在寻找更清洁的解决方案

2 个答案:

答案 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;

我希望这会有所帮助。