Php 如何将更新SQL查询替换为CodeIgniter ActiveRecord?

Php 如何将更新SQL查询替换为CodeIgniter ActiveRecord?,php,mysql,codeigniter,activerecord,Php,Mysql,Codeigniter,Activerecord,我使用CodeIgniter框架。当我尝试使用活动记录更新数据库时,出现了一个问题。 我发现了如何通过原始SQL解决它 UPDATE articles_articlegroups SET isDeleted = 1 WHERE articlegroupId IN ( SELECT id FROM articlegroups WHERE parent_id = $catID ) 但我需要使用AR I中堂类别和子类别与文章。类别和子类别在

我使用CodeIgniter框架。当我尝试使用活动记录更新数据库时,出现了一个问题。 我发现了如何通过原始SQL解决它

UPDATE articles_articlegroups
  SET isDeleted = 1
    WHERE articlegroupId IN (
      SELECT id
      FROM articlegroups
      WHERE parent_id = $catID
      )
但我需要使用AR

I中堂类别和子类别与文章。类别和子类别在一个表中。与父id链接。 文章链接位于一对多表中,因为它可以属于不同的类别


要删除所有文章,只需知道父id。

最简单快捷的方法是通过
$db->query(“sql”)

但不要直接传递参数以避免sql注入,而是绑定sql字符串中的参数

就这样试试看

$this->db->query("your query here");
最终查询

$this->db->query("UPDATE articles_articlegroups
      SET isDeleted = 1
      WHERE articlegroupId IN (
                              SELECT id
                              FROM articlegroups
                              WHERE parent_id = $catID
                              )");

是的,我做到了。但是我需要用$this->db->update()
$this->db->query()替换它。
将执行您的更新查询<代码>$this->db->update()在使用时不需要,
$this->db->query()
确定。但是我如何使用$this->db->where(),$this->db->update(),$this->db->set()和其他方法呢?不需要使用所有这些AR。当您使用
->query()
时,将普通查询作为参数传递。CI将自动执行查询。谢谢,我阅读了文档并找到了子查询的解决方案。select()…->get_compiled_select()和where_in();
$this->db->query("UPDATE articles_articlegroups
      SET isDeleted = 1
      WHERE articlegroupId IN (
                              SELECT id
                              FROM articlegroups
                              WHERE parent_id = $catID
                              )");
$data = array(
 'isDeleted' => 1
 );
 $this->db->set($data); 
 $this->db->where(
    'articlegroupId IN (
                       SELECT id
                        FROM articlegroups
                        WHERE parent_id = '.$catID.'
                       )'
                   );\
 $this->db->update('articles_articlegroups');