mysql - zend 框架中是否存在任何自动问题,例如 mysql 表中的创建和修改日期?

标签 mysql zend-framework

在 cakephp 中,mysql 表可以有两列,一列是“创建的”,另一列是“修改的”。

因此,当创建或更新帖子时,这两列会自动更新。

zend 框架有没有这样的问题?

有任何自动问题吗?

最佳答案

Zend 没有任何魔法。尽管您可以在 TIMESTAMP 和 TRIGGERS 的帮助下让 MySQL 来做 ;)。

这里有一些代码可能会有所帮助。

SET NAMES utf8;
SET foreign_key_checks = 0;
SET time_zone = 'SYSTEM';
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

INSERT INTO `test` (`id`, `name`, `updated`, `created`) VALUES
(1, 'test', '2011-08-28 13:47:21',  '0000-00-00 00:00:00'),
(2, 'hello',    '0000-00-00 00:00:00',  '0000-00-00 00:00:00'),
(3, 'hari', '2011-08-28 13:48:48',  '0000-00-00 00:00:00'),
(4, 'test', '2011-08-28 13:50:12',  '2011-08-23 08:19:47');

DELIMITER ;;

CREATE TRIGGER `on-insert` BEFORE INSERT ON `test` FOR EACH ROW
SET NEW.created = UTC_TIMESTAMP;;

DELIMITER ;

或者您也可以不使用触发器,例如在插入或更新时将 NOW() 与数据一起传递,并使更新或创建的时间戳为 DEFAULT 或 UPDATE 。因为你不能做两件事(仅用于更新或插入)。上面的代码灵感来自于 MySQL 中的一些评论。

关于mysql - zend 框架中是否存在任何自动问题,例如 mysql 表中的创建和修改日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7216026/

相关文章:

PHP 文件上传不起作用,注意输出到浏览器

mysql - mySQL 中内连接和外连接的混合

zend-framework - 虚拟机上的 ubuntu 与 ubuntu 安装,有什么区别?

php - 数据库、Jquery、Ajax 和 Zend 框架。怎么一起使用呢?

mysql - 由于外键约束,无法删除 MySQL 表

c++ - 原始二叉树数据库或 MongoDb/MySQL/等?

php - 管理员搜索查询

php - 过去 6 小时内所有事件的计数 Zend 框架

jquery - Zend 框架表单和 jQuery 选择器 - 如何通过... ID 选择?

php - Mysql查询连接表并仅选择不为空且具有相同ID的行