在将数据库值传递给视图之前修改数据库值

时间:2012-03-21 10:51:36

标签: php mysql codeigniter codeigniter-2

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

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

现在我有一个将mysql DATETIME更改为'time ago'的功能

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

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

其次, 在模型中执行此操作是正确的还是应该在Controller中完成?

2 个答案:

答案 0 :(得分: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()} });

答案 1 :(得分:0)

我想有点像:

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的功能是什么。