Phalcon Save:如果更新,我可以只更新指定的列吗?

时间:2017-02-02 09:51:17

标签: save phalcon

我有一个包含此列的表格:

param_id
val_value
val_flag
date_value
tmp_value
tmp_flag

我有一个元素数组,我总是有param_id和date_value,但有时我有val列,有时我有tmp列。

我使用$data->save()因为有时我需要在db中创建一个新寄存器,有时我需要用param_id和date_value更新寄存器。

问题是:有没有办法进行插入/更新但是什么时候更新,只更新tmp列或val列?我认为找到First是我唯一的选择,但也许有另一种方式。

谢谢。

[编辑]

我正在尝试使用白名单,但它不起作用。让我解释一下这个方法是如何工作的:我得到一个Web服务的请求,处理xml并生成一个包含所收集信息的元素数组,在处理完这些元素后,我有一个适合保存的类的元素数组,但这些可能是新的或现有的,可能包含tmp或val值,我已尝试过这个但我仍然将值更改为null。

if ($medida->tipo == 'temporal'){
  $whiteList = array('val_value','val_flag');
}else if ($medida->tipo == 'validado'){
  $whiteList = array('tmp_value','tmp_flag');
}
$dato->save(null, $whitelist);

我没有帖子的数据,我使用null代替,我也尝试使用数组手动分配数据获得相同的结果。

2 个答案:

答案 0 :(得分:0)

以下两个选项可以帮助您:

1)save()方法使用“白名单”。

$obj->save($this->request->getPost(), ['tmp_1', 'tmp_2']);

the documentation中的更多信息。

2)使用“活动经理”。

方法beforeCreate()beforeUpdate()非常有用,因此您可以决定使用哪些字段。

the documentation 中的更多信息。

答案 1 :(得分:0)

此外,如果您真的希望phalcon phql只更新您需要启用动态更新的更改列。