如果我使用的是model
的afterFind
功能調整數據基於其地理位置,像這樣:保持數據從afterFind更新那種方式?
#app/models/product.php
function afterFind($results)
{
if($userInArea)
{
if(!isset($results[0]['Product']['price']))
{
return $results;
}
foreach ($results as $key => $val)
{
$results[$key]['Product']['price'] = $this->priceAdjustAfterFind($val['Product']['price']);
}
return $results;
}
}
function priceAdjustAfterFind($price)
{
return $price * 1.2;
}
這將使該模型高20%,如果在返回的數據的價格領域某些地區。
的問題是:
可以說價格是100的管理員是在GEO區並進入編輯產品admin/product/edit/4
。從product model
獲得的edit view
的數據價格將上漲至120,因爲她在GEO地區,並將觸發價格調整。
因此,只要她保存(稱她調整了名稱),她將無意中將價格從100更改爲120.現在,如果她再次編輯它,它將加載144,每次增加。
我沒有想出一個合理的方法來防止這種情況。有什麼建議麼?