laravel之null替换空字符串中间件

在laravel写接口的时候免不了数据库中保存null,可用诸如设置ORM的访问器或以下方法处理

$goods->name?$goods->name:‘‘;

其实可以利用路由中间件,在需要的地方引入中间件即可

中间件

class ReplaceNullMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);
        $data = json_decode($response->getContent(), true);
        if(isset($data[‘data‘])){
            $newData = _unsetNull($data[‘data‘]);
            $data[‘data‘] = $newData;
            return $response->setContent(json_encode($data));
        }
        return $response;
    }
}

再Kernel.php引入路由中间件。使用方法

Route::post(‘/employeeList‘, ‘[email protected]‘)->middleware(‘replaceNull‘);
//递归方式把数组或字符串 null转换为空‘‘字符串
function _unsetNull($arr){
    if($arr !== null){
        if(is_array($arr)){
            if(!empty($arr)){
                foreach($arr as $key => $value){
                    if($value === null){
                        $arr[$key] = ‘‘;
                    }else{
                        $arr[$key] = _unsetNull($value);      //递归再去执行
                    }
                }
            }
        }else{
            if($arr === null){ $arr = ‘‘; }         //注意三个等号
        }
    }else{ $arr = ‘‘; }
    return $arr;
}

原文地址:https://www.cnblogs.com/kkform/p/9236023.html

时间: 2024-10-08 17:31:29

laravel之null替换空字符串中间件的相关文章

velocity模板判断null和空字符串方法

在web开发中,经常会遇到一个需求是,判断变量为空(null)或者空字符串(""),从而影响页面的展示逻辑,velocity中有相应的方法可以判断.当然也可以在java后端转化到有效值再判断.以下是本人在开发中自己总结的,希望对大家有所帮助! (1)判断null #if( $name  ==  null) something code #end (2)判断null或者false #if( !$name) something code #end (3)判断null或者空字符串 #if(

Oracle中Null与空字符串' '的区别

含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除了以下两种情况: 1.主键字段(primary key), 2.定义时已经加了NOT NULL限制条件的字段 说明: 1.等价于没有任何值.是未知数. 2.NULL与0.空字符串.空格都不同. 3.对空值做加.减.乘.除等运算操作,结果仍为空. 4.NULL的处理使用NVL函数. 5.比较时使用关键

Django与SQL语言中——NULL与空字符串的区别

SQL有指定空值的独特方式,它把空值叫做NULL. Null在数据库中表示 不知道的数据,主要有3种意思: 1)知道数据存在,但不知道具体值. 2)不知道数据是否存在. 3)数据不存在. 在SQL中, NULL的值不同于空字符串,就像Python中None不同于空字符串("")一样.这意味着某个字符型字段(如VARCHAR)的值不可能同时包含NULL和空字符串. 这会引起不必要的歧义或疑惑. 为什么这条记录有个NULL,而那条记录却有个空字符串? 它们之间有区别,还是数据输入不一致?

C++ NULL 与 空字符串 在使用时的注意点

在这不做 理论上的 释疑,只是提供示例代码 int main() { char *p=NULL; if (p==NULL) // { p="p is NULL pointer"; } printf("%s\n",p); return 0; } //此处说明:在定义 指针p的同时使用 NULL 对p进行初始化,若是在比较的时候用 p[0] == '\0' 则会报错//   原因是 p不指向任何变量,对p进行[]操作非法//   变量所指的范围 包括 普通的内置变量,自

PHP递归方式把一个数组里面的null转换为空字符串”的方法

在一些接口的调用中,直接查询数据库出来的字段可能为null字段,但是为了简便前端的判断,需要把null转换成空字符串'',这个时候就需要递归的方式进行.直接上代码如下: //递归方式把数组或字符串 null转换为空''字符串 public function _unsetNull($arr){ if($arr !== null){ if(is_array($arr)){ if(!empty($arr)){ foreach($arr as $key => $value){ if($value ===

mysql 判断null 和 空字符串

1.在mysql中null 不能使用任何运算符与其他字段或者变量(函数.存储过程)进行运算.若使用运算数据就可能会有问题. 2.对null 的判断: 创建一个user表:id 主健 name 可以为空 select * from user; insert into user values('33',null);  ##创建一条name为空的数据 insert into user values('222','');  ##创建一条为空字符的数据 用isnull判断是否为空:只有name 为null

NULL与""空字符串的区别

""空字符串,会创建一个对象,分配内存空间 NULL,不会创建对象,不会分配内存空间,意思是不存在的 #include <iostream> using namespace std; int main() {         std::string strTemp;         if( strTemp.empty() )         {                 cout<<"is empty "<<endl;   

Fastjson输出null为空字符串

JSONObject.toJSONString(Object object, SerializerFeature... features) SerializerFeature有用的一些枚举值 QuoteFieldNames———-输出key时是否使用双引号,默认为true WriteMapNullValue——–是否输出值为null的字段,默认为false WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null WriteNullListAsEmpty—–L

freemarker if判断字符串是否为null,为空字符串

网上查了,好久都没有一个可以表达清楚的,采取一个委婉的方法<#if segment.group_id?default("")?trim?length gt 1> <#if groups?size!=0> <#list groups as group> <#if group.groupId==segment.group_id> <td align="center" title="${segment.gro