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');