ThinkPHP 5过滤数据表中不存在的字段

最近在做项目的时候,为了方便数据表的添加或者更新操作,有时会重新命名数据表中字段的名称(这里的重命名只是在Model层,而不是在数据表里),在网上查询了一下,又看了一下ThinkPHP 5完全开发手册,有两种方法可以解决这个问题。
我出现的问题如下:

这里的old_goods_attr是数据表中不存在的,但是因为程序需要添加的。
这时我的代码是:

public function edit()
{   
    if(request()->isPost()){
        $data=input('post.');
        $update=model('goods')->save($data);
        if(!$update){
            $this->success('修改商品成功!','lst');
        }else{
            $this->error('修改商品失败!');
        }
        return;
}

解决方法有两个:

方法一

在你的模型类定义中,设置 field 属性为 true,如下:

class User extend Model {
    protected $field = true;
}

方法二

如果需要过滤非数据表字段的数据,可以使用:

$user = new User($_POST);
    // 过滤post数组中的非数据表字段数据
$user->allowField(true)->save();

我利用方法二修改后,还是不行,会报下面的错误:

这是由于我的数据添加修改都用到了save()提交到数据库,我这里修改数据,这是只需要修改为:

$user->allowField(true)->isUpdata(ture)->save();

这时完整的代码为:

public function edit()
{
    if(request()->isPost()){
        $data=input('post.');
        $update=model('goods')->allowField(true)->isUpdate(true)->save($data);
        if(!$update){
            $this->success('修改商品成功!','lst');
        }else{
            $this->error('修改商品失败!');
        }
        return;

}

到这里,就成功了!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值