2011-08-27 2 views
1

cakephp에는 mysql 테이블을위한 두 개의 컬럼이있을 수 있는데, 하나는 "생성"되고 다른 하나는 "변경"됩니다.zend framework에서 mysql 테이블의 생성 및 수정 된 날짜와 같은 자동화 된 문제가 있습니까?

따라서 게시물이 생성되거나 업데이트되면 두 개의 열이 자동으로 업데이트됩니다.

젠드 프레임 워크와 관련된 문제가 있습니까?

자동 문제입니까?

+2

아니요, 없습니다. 그것이있는 것입니다. 없음. – markus

답변

1

젠드는 어떤 마법도하지 않습니다. 비록 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

관련 문제