【问题标题】:Codeigniter 4 'update' from Controller来自控制器的 Codeigniter 4“更新”
【发布时间】:2021-01-03 13:23:50
【问题描述】:

我很困惑......

这个函数运行正常并且不会抛出任何错误...但它不会更新我表中的行。

我哪里出错了?

控制器:

    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() 有什么回报吗?
  • @Vickel 什么都没有。当我var_dump它时,甚至没有“NULL”。
  • 我已经更新了我的答案,在查看了你的控制器和模型之后,希望这现在可以工作

标签: codeigniter controller sql-update query-builder codeigniter-4


【解决方案1】:

这是模型的$allowedFields 问题,因此“不允许”更新任何内容。

【讨论】:

    【解决方案2】:

    由于$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();
        }
    }
    

    【讨论】:

    • @Vickel 这就是我如此困惑的原因......我的数据库中有成千上万的匹配条目需要更新。没有拼写错误或任何东西。
    • 你能创建一个小的 sqlfiddle 吗?类似:sqlfiddle.com/#!9/a6c585/1
    • @Vickel 这是它:sqlfiddle.com/#!9/bf443f 谢谢大家的帮助!
    • 检查sqlfiddle.com/#!9/52bc7f/1:左侧面板现在更新您现有的商家,如果您将商家名称更改为不存在的商家名称,它将无法更新并给出错误,因此CI 4 .x save() 函数,它实际上生成了这个 SQL:stackoverflow.com/a/14383597/2275490
    • @Vickel 感谢您花时间帮助我解决这个问题。真的很感激!不过,您在 MySQL 中编写的代码与我最初为 Controller 编写的代码不一样吗?我为我的 Controller 编写的代码并没有更新数据,但它看起来和你的逻辑相同......我需要在我的 Controller 中进行哪些更改才能进行更新?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多