我想在后台办公室的Prestashop 1.6自定义表中添加一个“虚拟”字段。字段indice_calculo_pvp2不应保存到数据库中,因为它是根据indice_calculo_pvp和precio_venta_recomendado的值计算的。实现这个的正确方法是什么?
我的代码如下:
public function renderList() {
$this->addRowAction('edit');
$this->addRowAction('delete');
$this->fields_list = array(
'id_product_price' => array(
'search' => false,
'title' => 'ID'
),
'precio_coste' => array(
'title' => 'Precio coste',
'search' => false,
'callback' => 'callback_format_price',
'suffix' => '€'
),
'indice_calculo_pvp' => array(
'title' => 'Indice de cálculo PVP',
'search' => false,
'callback' => 'callback_format_price',
'suffix' => '%'
),
'indice_calculo_pvp2' => array(
'title' => 'Indice de cálculo PVP2',
'search' => false,
'callback' => 'callback_calculate_pvp',
'suffix' => '%'
),
'precio_venta_recomendado' => array(
'title' => 'Precio de venta recomendado con IVA',
'search' => false,
'callback' => 'callback_format_price',
'suffix' => '€'
)
);
return parent::renderList();
}
答案 0 :(得分:1)
在SQL SELECT查询中使用计算列表。我不知道您的计算公式和SELECT查询是什么,但这样做的例子是:
$this->_select = 'a.indice_calculo_pvp / a.precio_venta_recomendado AS indice_calculo_pvp2';
答案 1 :(得分:0)
您有两个选择:
您可以在代码中使用回调函数:
public function callback_calculate_pvp($ id,$ tr)
{
return $ tr ['indice_calculo_pvp'] * $ tr ['precio_venta_recomendado'];
}
indice_calculo_pvp2
中使用虚拟列,并在SQL查询或getList覆盖函数中设置值(如ProductController的价格)。