【问题标题】:CakePHP: One column -> one TRUECakePHP:一列 -> 一个 TRUE
【发布时间】:2012-06-29 09:35:59
【问题描述】:

希望有人可以帮助我:

我想要一个包含一个且仅一个 TRUE 值的列。我想将TRUE(或'1')的值设置为一行,并确保剩余的行是FALSE(或'0')。

如何使用 CakePHP 实现这一点?

【问题讨论】:

  • 将所有行设置为false,然后将一行设置为true...?
  • 您能具体说明您想要这个的原因吗?我很好奇。

标签: database cakephp boolean cakephp-2.0


【解决方案1】:

您不能在数据库级别强制执行此操作(好吧,如果您使用触发器,则可以)因此您必须使用 Model::beforeSave() 强制执行它

类似的东西:

public function afterSave() {

    if ($this->data['Model']['field'] == 1) {
        // set all other records to false
        $this->updateAll(array('field'=>0));
    }

}

当记录被保存时,它应该是唯一一个'field'设置为true的记录。

【讨论】:

  • 我仍然很想在保存后这样做,以防万一在保存过程中出现问题。
  • afterSave 中的updateAll 不会也将刚刚为field 指定为 1 的行设置为 0 吗?
  • 啊,很好的捕捉 perterbond >.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 2018-08-10
  • 1970-01-01
相关资源
最近更新 更多