我有一个包含此列的表格:
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代替,我也尝试使用数组手动分配数据获得相同的结果。
答案 0 :(得分:0)
以下两个选项可以帮助您:
1)对save()
方法使用“白名单”。
$obj->save($this->request->getPost(), ['tmp_1', 'tmp_2']);
the documentation中的更多信息。
2)使用“活动经理”。
方法beforeCreate()
和beforeUpdate()
非常有用,因此您可以决定使用哪些字段。
the documentation 中的更多信息。
答案 1 :(得分:0)
此外,如果您真的希望phalcon phql只更新您需要启用动态更新的更改列。