与此问题相关,DataObject
扩展的 withonBeforeWrite
方法不会在 DB 上写入特定的属性值。详细地:
数据对象:
[...]
/**
* Classe Prodotto
*/
class Prodotto extends DataObject
{
// Dichiarazione Proprietà
private static $db = [
[...]
'PrezzoIva' => 'Currency',
[...]
onBeforeWrite
方法:
/**
* Metodo gestione azioni salvataggio
* Calcolo automatico prezzo lordo e scontato
* Setter
* @return void
*/
public function onBeforeWrite()
{
// Controllo Record
if (!$this->isInDb()) {
$this->setPrezzoIva();
}
if ((!isset($this->record['PrezzoIva'])) || ($this->record['PrezzoIva'] == 0)) {
$this->setPrezzoIva();
}
parent::onBeforeWrite();
}
上面调用的方法:
/**
* Metodo calcolo prezzo lordo IVA
* Setter
* @return void
*/
public function setPrezzoIva()
{
// Controllo IVA
if ((isset($this->PrezzoIva)) && ($this->PrezzoIva == 0)) {
$prezzoIva = ($this->PrezzoUnitario * $this->Iva) + $this->PrezzoUnitario;
// Salvataggio IVA
$this->PrezzoIva = $prezzoIva;
}
}
没有抛出异常。基本上,无论是第一次保存还是write()
其他保存,PrezzoIva
都没有更新(它保留默认值)。DataObject
经过几次编辑,这里是我的数据库的摘录:
目前,我不知道是什么原因造成的。任何形式的帮助将不胜感激。
提前谢谢大家。