Codeigniter 编码点火器4';更新';来自控制器

Codeigniter 编码点火器4';更新';来自控制器,codeigniter,controller,sql-update,query-builder,codeigniter-4,Codeigniter,Controller,Sql Update,Query Builder,Codeigniter 4,我很困惑 此函数运行正常,不会抛出任何错误。。。但它不会更新我表中的行 我哪里出错了 控制器: public function update() { $model = new StoreModel(); $model->where('merchant', 'Klip Shop')->set('availability', 'out of stock')->update(); }

我很困惑

此函数运行正常,不会抛出任何错误。。。但它不会更新我表中的行

我哪里出错了

控制器:

    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()
不返回任何内容,这意味着您没有任何可以更新的数据

您需要先插入一行

  • 如果没有检测到行,则可以使用insert()函数 商号
  • CI 4.x中有一个save()函数,它可以插入或删除 重复更新。但要让它发挥作用,你需要设置 商户要唯一或使用具有唯一密钥的列
  • 请阅读:

    编辑:你实际上也把我弄糊涂了:

    直到现在我才分析了你的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();
        }
    }
    

    模型存在
    $allowedFields
    问题,因此不允许更新任何内容。

    是否
    $model->where('merchant','Klip Shop')->get()
    返回任何内容?没有什么。当我
    var_dump
    它时,甚至没有“NULL”。我已经更新了我的答案,在查看了您的控制器和模型之后,希望这现在能起作用,这就是为什么我如此困惑的原因。。。我的数据库中有成千上万个匹配的条目需要更新。没有拼写错误或任何东西。你能创建一个小的sqlfiddle吗?比如:就是这样:谢谢你的帮助!检查:左侧面板现在更新您现有的商户,如果您将商户名称更改为一个不存在的名称,它将无法更新并给出错误,因此CI 4.x save()函数实际上会生成以下SQL:感谢您花费所有时间帮助我完成此项工作。非常感谢!您在MySQL中编写的代码与我最初为控制器编写的代码不一样吗?我为我的控制器编写的代码没有更新数据,但它看起来与您的逻辑相同。。。我需要在控制器中更改什么才能进行更新?