我试图更新数据库中的一行,但没有找到一种方法以CakePHP方式执行此操作(unless I query the row to retrieve and update).
UPDATE mytable (field) VALUES (field+1) WHERE id = 1
Run Code Online (Sandbox Code Playgroud)
在CodeIgniter中,它将如下所示:
$this->db->set('field', 'field+1', FALSE);
$this->db->where('id', 1);
$this->db->update('mytable');
Run Code Online (Sandbox Code Playgroud)
如何在不先查询行,检索值,然后用我得到的信息更新行的情况下执行此操作?
Jam*_*mie 12
我不认为CakePHP在单行的普通save()中有类似的方法.
但更新多行的updateAll()方法确实支持SQL代码片段,如下所示:
$this->Widget->updateAll(
array('Widget.numberfield' => 'Widget.numberfield + 1'),
array('Widget.id' => 1)
);
Run Code Online (Sandbox Code Playgroud)
第一个参数是要更新的字段/值数组,第二个参数是要更新行的条件.
除此之外,我认为唯一的用途是:
$this->Widget->query('YOUR SQL QUERY HERE');
Run Code Online (Sandbox Code Playgroud)
这使您可以使用原始SQL进行查询.[编辑:但不建议这样做,因为它绕过了ORM.]
| 归档时间: |
|
| 查看次数: |
4600 次 |
| 最近记录: |