Ya, itu mungkin, menggunakan Zend_Db_Expr
:
$object->setNumber(new Zend_Db_Expr('number-1'));
Sebagai referensi:
Metode ini Mage_Core_Model_Resource_Abstract::_prepareDataForSave()
berisi kode berikut:
if ($object->hasData($field)) {
$fieldValue = $object->getData($field);
if ($fieldValue instanceof Zend_Db_Expr) {
$data[$field] = $fieldValue;
} else {
... [normal value processing follows]
Model EAV:
Perhatikan bahwa Anda hanya dapat mereferensikan atribut dengan namanya ("angka" dalam contoh) jika itu adalah kolom nyata dari tabel utama, bukan atribut EAV.
Meskipun metode yang disebutkan di atas hanya digunakan oleh model dengan tabel datar, Zend_Db_Expr
dapat digunakan untuk atribut EAV juga, metode yang menanganinya Varien_Db_Adapter_Pdo_Mysql::prepareColumnValue()
.
TETAPI Anda selalu menggunakan nama kolom " value
":
$product->setNumber(new Zend_Db_Expr('value-1'));
Anda tidak perlu menentukan alias tabel karena saat menyimpan setiap atribut diproses dengan kueri sendiri, jadi "nilai" tidak ambigu.