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

时间:2011-08-27 17:03:18

标签: mysql zend-framework

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

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

对于zend框架有什么问题吗?

任何自动化问题?

1 个答案:

答案 0 :(得分:1)

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

中一些评论的灵感来源