我正在尝试使用Phalcons
save()
函数创建或更新记录,具体取决于记录是否已存在于数据库中from here
我正在做以下事情:
$vars = $this->request->getPost();
$code = new Code();
$code->save( $vars, array("code_type", "code", "name") );
当我向控制器发送更新时," id"如果我正在创建记录,则字段已填充主键,而它是空白的(但数组键仍然存在)。
我的理解是ORM应该创建或更新记录,具体取决于主键是否存在。我遇到的问题是它始终创建记录而不是更新。
我也尝试过类似下面的内容,但是当我使用find时反之亦然:
$code = Code::findFirst($vars["id"]);
$code->save( $vars, array("code_type", "code", "name") );
知道我可能做错了吗?我想达到一个点,我有一个控制器用于我的插入/更新操作。
答案 0 :(得分:1)
第一个示例仅创建新记录并不奇怪,因为您既没有加载现有记录,也没有在要保存的白色字段列表中包含“id”。如下实例化对象应解决问题(假设“id”是整数):
$code = ($id = (int) $vars['id']) ? Code::findFirst($id) : new Code();