欢迎来到元素模板ys720.com,本站提供专业的织梦模板帝国模板网站模板网站修改/网站仿站
当前位置:主页 > 程序教程 > thinkphp教程 >
thinkphp教程

thinkphp 5.1.40 LTS 使用allowField(true) 忽略字段 无效解决方法

(元素模板) / 2021-12-28 11:51

thinkphp版本5.1.40 LTS

表单提交的数据为

$data['id'] = 8;
$data['roleTitle'] = '123';
$data['roleDesc'] = 'abc';
其中id数据表中不存在,所以需要过滤

但是

$rs = $this->allowField(true)->save($data,['roleId'=>(int)$id]);

$rs = $this->allowField(['roleTitle','roleDesc'])->save($data,['roleId'=>(int)$id]);

都无效

不知道哪的问题,网上找了很多,很少有人碰到这个问题,即便碰到,也没有给出解决方案。

最后没办法,只能用php 的 unset() 销毁变量,

unset($data['id']);

然后就可以保存数据了

$rs = $this->save($data,['roleId'=>(int)$id]);

如果销毁多个参数,可以自定义一个函数

/**
 * 删除一维数组里的多个key
 */
function ZHTUnset(&$data,$keys){
    if($keys!='' && is_array($data)){
        $key = explode(',',$keys);
        foreach ($key as $v)unset($data[$v]);
    }
}
 
调用

ZHTUnset($data,'id');

 

Copyright @ 2013-2021 元素模板 www.ys720.com All Rights Reserved. 版权所有 元素模板 www.ys720.com