Codeigniter 4从控制器“更新”

问题描述

我很困惑...

函数运行正常,不会引发任何错误...但是它不会更新表中的行。

我哪里出错了?

控制器:

    public function update()
    {     
        $model = new StoreModel();
      
        $model->where('merchant','Klip Shop')->set('availability','out of stock')->update();
        
    }

型号:

class StoreModel extends Model
{
    protected $table = 'shop';
}

解决方法

由于$model->where('merchant','Klip Shop')->get()不返回任何内容,这意味着您没有任何可更新的数据。

您需要先插入一行。

  1. 如果未检测到行,则可以使用insert()函数 商户名称

  1. CI 4.x中存在save()函数,该函数可以插入或 重复更新。但是要使其正常工作,您需要设置 商家使用唯一键或使用带有唯一键的列

请阅读:Saving Data in CI 4.x

编辑:您实际上也让我感到困惑:

直到现在,我才对您的MCV代码进行了分析:

您应该有一个控制器

public function update()
{     
    $model = new StoreModel();
    $model->update();
}  

    

和模型:

class StoreModel extends Model
{
    $db      = \Config\Database::connect();
    $model= $db->table('shop');

    function update(){
        $model->where('merchant','Klip Shop')->set('availability','out of stock')->update();
    }
}
,

这是该模型的chat.type = 'supergroup'问题,因此“不允许”进行任何更新。