gpt4 book ai didi

php - 在 CakePHP 中,您如何确定字段是否在编辑操作中被更改?

转载 作者:可可西里 更新时间:2023-10-31 22:09:03 24 4
gpt4 key购买 nike

我在 CakePHP 中使用 cacheCounter,它会增加相关字段的计数器。

例如,我有一个 Person 表和一个 Source 表。 Person.source_id 映射到 Source 表中的一行。每个人都有一个 Source,每个 Source 没有或有很多 Person 行。

cacheCounter 在我更改某个人的源值时效果很好。它递增 Source.Person_Count。很酷。

但是当它递增时,它会将它添加到一个人的目标源中,但不会将其从旧值中删除。我在 afterSave 中尝试了 updateCacheControl(),但没有做任何事情。

然后我在我的模型中为 afterSave 编写了一些代码,它将减去源 source_id,但它总是这样做,即使我什至没有更改 source_id . (因此计数变为负数)。

我的问题:有没有办法判断 CakePHP 中的模型中的字段是否已更改?

最佳答案

要监视字段中的更改,您可以在模型中使用此逻辑,而无需在其他地方进行任何更改:

function beforeSave() {
$this->recursive = -1;
$this->old = $this->find(array($this->primaryKey => $this->id));
if ($this->old){
$changed_fields = array();
foreach ($this->data[$this->alias] as $key =>$value) {
if ($this->old[$this->alias][$key] != $value) {
$changed_fields[] = $key;
}
}
}
// $changed_fields is an array of fields that changed
return true;
}

关于php - 在 CakePHP 中,您如何确定字段是否在编辑操作中被更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/115665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com