【问题标题】:CakePHP updating multiple rows with record ids, same modelCakePHP 用记录 ID 更新多行,相同的模型
【发布时间】:2014-08-21 11:41:46
【问题描述】:

我想更新模型。我有这样的查询

UPDATE mymodels SET `myfield` = 100 WHERE `id`=12 OR `id`=13 OR `id`=14
// also the same:
UPDATE mymodels SET `myfield` = 100 WHERE `id` IN (12,13,14)

我试过这个:

$this->MyModel->updateAll(
    // fields
    array('MyModel.myfield' => 100),
    // conditions
    array('MyModel.id' => 12)
);

但我需要更新 20 条不同的记录。
记录 id 是这样的 12, 13, 14 ....

【问题讨论】:

  • 表示小于或等于。您不想要 12 或更大 (>=) 吗?不过,您可能需要 IN 运算符。我相信正确的语法是定义一个id的数组$ids = array(12,13,14);然后在条件参数array('MyModel.id' => $ids)中使用它
  • 抱歉有错别字。我修正了更大和等号。

标签: cakephp model


【解决方案1】:

如果您要更新的记录是连续的,那么尝试添加两个这样的条件

$this->MyModel->updateAll(
    array('MyModel.myfield' => 100),
    // conditions
    array('MyModel.id >=' => 12, 'MyModel.id <=' => 20)
);

如果id的索引之间没有关系,请尝试使用数组

$this->MyModel->updateAll(
    array('MyModel.myfield' => 100),
    // conditions
    array('MyModel.id' => array(12,13,14...))
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多