我是 CodeIgniter 中 DataMapper ORM 的新手,这是我的问题。根据手册:
小心这种方法。无需使用 where 语句或类似方法对其进行限制,它将修改表中的每一行!
另外,这种方法绕过了验证,也可以对表内的外键进行操作,所以请注意风险。
如果更新方法绕过验证,那么在更新之前更新记录验证它的方法是什么?示例代码将不胜感激。
我是 CodeIgniter 中 DataMapper ORM 的新手,这是我的问题。根据手册:
小心这种方法。无需使用 where 语句或类似方法对其进行限制,它将修改表中的每一行!
另外,这种方法绕过了验证,也可以对表内的外键进行操作,所以请注意风险。
如果更新方法绕过验证,那么在更新之前更新记录验证它的方法是什么?示例代码将不胜感激。
DataMapper ORM 无法验证,因为它只能对您首先获取的数据进行验证。UsingUPDATE
允许 MySQL 修改字段而不检查最终的 PHP 验证函数。
解决方案是首先获取您需要的所有行,然后使用该save()
函数。然后将完成 PHP 端验证。
http://datamapper.wanwizard.eu/pages/save.html
我对 DataMapper ORM 有点生疏,但这里有一个例子可以解释你应该做什么:
$users = new User();
$users->where('age', 25)->get();
foreach($users as $user)
{
$user->age = 26;
$user->save();
}
update() 方法只不过是 $this->db->update() 的别名。
它只检查是否需要将更新时间戳添加到更新的记录中,并确保传递的字段存在于您要更新的表中。
要更新对象,请使用 save()。它将自动确定是否需要 INSERT 或 UPDATE。
如果你尝试 $obj->save(); 和动态验证规则(取决于一些 $_POST 变量)并且仍然没有验证,
尝试使用 $obj->force_validation(); 在 $obj->save(); 之前