Изменение значения базы данных перед передачей его в представление - PullRequest
1 голос
/ 21 марта 2012

Это моя текущая функция для получения всех пользователей:

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

Теперь у меня есть функция, которая изменяет mysql DATETIME на 'time ago'

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

Как я могу изменить все даты-тайны mysql в массиве, который генерирует get_all перед передачей его контроллеру и представлению?

Во-вторых, Правильно ли это делать в модели или в контроллере?

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Я бы сказал, что модель подходит для этого.

У вас есть несколько опций, просто перебирающих массив, например,

$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());
   }
}

return $ 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()} });
0 голосов
/ 21 марта 2012

Полагаю, что-то вроде:

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;
}

Я не могу сказать, что именно делают функции timespan и human_to_unix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...