【问题标题】:Modifying database value before passing it to the view在将数据库值传递给视图之前修改数据库值
【发布时间】:2012-03-21 10:51:36
【问题描述】:

这是我目前获取所有用户的功能:

function get_all() {
    return $this->db->get($this->tableName)->result();
}

现在我有一个函数可以将 mysql DATETIME 更改为 'time ago'

timespan(human_to_unix($datetime),time());

在将 get_all 生成的数组中的所有 mysql 日期时间传递给控制器​​和视图之前,如何更改它?

其次, 在 Model 中这样做是否正确,还是应该在 Controller 中这样做?

【问题讨论】:

  • @safarov 我不确定在模型类中是否允许通过该数组循环

标签: php mysql codeigniter codeigniter-2


【解决方案1】:

我会说模型很适合这样做。

您有许多选项,只需遍历数组即可 例如

$results = $this->db->get($this->tableName)->result();
foreach($results as $key=>$value)
{
  if($key=="<name of date time field>")
   {
     $results[$key]=timespan(human_to_unix($value),time());
   }
}

返回 $results;

如果 5.3 php 使用带有匿名函数的 array_walk 之类的东西

$results = $this->db->get($this->tableName)->result();

    array_walk($results, function (&$v, $k) { if($k=="<name of date time field>"){$v=timespan(human_to_unix($v),time()} });

【讨论】:

    【解决方案2】:

    我想是这样的:

    function get_all() {
        $arr = $this->db->get($this->tableName)->result();
        foreach(array_keys($arr) as $h)
            $arr[$h]->datetime = timespan(human_to_unix($arr[$h]->datetime),time());
    
        return $arr;
    }
    

    我不知道timespanhuman_to_unix 的功能究竟是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多