【发布时间】:2012-03-06 19:49:01
【问题描述】:
我必须在我的日志表上记录每个数据库操作,这是表:
log_id - INT
user_id - INT
table - VARCHAR(45)
date - INT
action - ENUM('INSERT','DELETE','UPDATE')
new_value - VARCHAR(255)
old_value - VARCHAR(255)
如果用户创建一个新的博客文章,例如,我必须保存用户 ID,将插入对象的表,日期,操作将是“INSERT”,new_value 将是 php 对象序列化, old_value 将为空。
在更新的情况下,我需要将 new_value 与新对象一起保存,但在此之前我需要保存当前值,同时在 old_value 列上进行序列化。
在删除的情况下,我需要将序列化的对象保存在 old_value 列中,并将 new_value 留空。
我正在阅读有关 CI Hooks 的信息,但它似乎不适用于数据库操作,仅适用于控制器和系统。有没有办法使用钩子或有更好的解决方案?
提前感谢您的帮助。
对不起,描述太长了,我不善言辞。
【问题讨论】:
-
你可以使用钩子——如果它是一个后钩子,那么我认为你仍然可以访问 CI 对象——你在使用 $ci = get_instance();在你的钩子里?如果它是预系统挂钩,则 CI 对象尚不可用,因此您必须使用 PDO 或其他方法以老式方式进行。
-
谢谢@Stevo,在没有post action的情况下,hook 处理不了对吧?
-
不确定您所说的“不是发布操作”是什么意思。
-
如果用户想删除一些东西,我会给他一个链接,它会调用删除函数,所以,这不是一个发布操作,是吗?对于帖子,我知道这是通过表单发送的内容
标签: php codeigniter hook