【问题标题】:Codeigniter Datamapper automated created updated fieldsCodeigniter Datamapper 自动创建更新字段
【发布时间】:2012-07-18 04:51:30
【问题描述】:

似乎这应该是容易的部分,但我似乎无法做到这一点。我的 createdupdated 字段没有被填充。我尝试将这些字段重命名为不同的名称,但不行。除了如下所示的架构和设置类(非常基本)之外,我是否遗漏了什么?

Codeigniter v2.1.2 数据映射器 ORM v1.8.2.1

架构:

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `created` datetime NOT NULL,
  `updated` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1

用户类别:

<?php

class User extends DataMapper
{

    function User()
    {
        parent::DataMapper();
    }

}

【问题讨论】:

  • 嗯,有趣的事情。我允许 createdupdated 列使用 NULL。当我创建一个新用户时,created 设置为 '0000-00-00 00:00:00' 并且updated 为 NULL。所以它似乎设置了created 列,但是我需要在某处编辑时间配置吗?

标签: php codeigniter codeigniter-2 codeigniter-datamapper


【解决方案1】:

好的,找到了答案,希望这对某人有所帮助。我需要在 application/config/datamapper.php 文件中设置以下内容:

$config['local_time'] = TRUE;
$config['unix_timestamp'] = FALSE;
$config['timestamp_format'] = 'Y-m-d H:i:s';

【讨论】:

  • 默认情况下,Datamapper 配置为使用整数作为时间戳,并存储 UNIX 时间戳,这比 MYSQL 日期时间字段更有效。
  • 但用户文档说“注意:默认情况下,Created 和 Updated 字段属于 DateTime 类型,并使用 GMT/UTC 时间。” (datamapper.wanwizard.eu/pages/timestamp.html 访问时间 2013/04/23)
  • @WanWizard :更新和创建的字段必须允许为零。我对吗?这个库在模型创建的更新字段中放置 nil。并不是更新的字段与在数据库中创建模型时的创建相同。这是图书馆的预期行为吗?
【解决方案2】:

在您的 config/datamapper.php 文件中,确保设置“created_field”和“updated_field”以匹配您的数据库列。或者您可以在模型本身中覆盖它们。即。

<?php

class User extends DataMapper
{
    var $created_field = 'created';
    var $updated_field = 'updated';

    function User()
    {
        parent::DataMapper();
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多