【问题标题】:Convert NULL into empty string while getting response在获得响应时将 NULL 转换为空字符串
【发布时间】:2021-06-06 07:02:30
【问题描述】:

我只想在从 db 获取结果时如何将 null 转换为空字符串。 例如

User::first();

在用户表中,卷号为空值。我希望它转换成空字符串。

【问题讨论】:

  • Android 或 iphone 开发者需要NULL"" 的所有回复吗?
  • 适用于 iphone 开发者
  • 然后使用中间件并应用到所有路由,这样你就不会错过任何地方

标签: php database laravel equivalent


【解决方案1】:

是的,您可以在 boot 方法中使用检索到的观察者来执行此操作。

 self::retrieved(function ($model) {
        $keys = $model->fillable;
        foreach ($keys as $key => $value) {
            $model->attributes[$value] = @$model->attributes[$value] == null ?  '' : $model->attributes[$value];
        }
    });

【讨论】:

    【解决方案2】:

    我有同样的任务,我通过中间件解决了这个问题

    创建NullToBlank.php中间件

    <?php
    
    namespace App\Http\Middleware;
    
    use Closure;
    
    class NullToBlank
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            $output = $next($request);
            if ($output) {
    
                $json = $output->content();
                $modelAsArray = json_decode($json, true);
    
                if (is_array($modelAsArray)) {
                    array_walk_recursive($modelAsArray, function (&$item, $key) {
                        $item = $item === null ? '' : $item;
                    });
                    return response($modelAsArray);
                } else {
                    return $next($request);
                }
            }
        }
    }
    

    然后在需要将NULL 替换为"" 时应用此中间件

    【讨论】:

      猜你喜欢
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多