2012-03-21 3 views
1

これは、すべてのユーザーを取得するために私の現在の関数である:変更データベース値ビューに渡す前

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

今、私は「前の時間」に

timespan(human_to_unix($datetime),time()); 
をMySQLのDATETIMEを変更する機能を持っています

コントローラとビューに渡す前に、get_allが生成する配列内のすべてのmysql datetimesを変更するにはどうすればいいですか?

第2に、 モデルでこれを行うのは正しいのですか、これはコントローラで行うべきですか?私は機能timespanhuman_to_unixが正確に何を言うことができない

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

+0

ループを試してみませんなぜですか? – safarov

+0

@safarov Modelクラスでその配列をループすることが許されているかどうかはわかりませんでした – Simon

答えて

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

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

私はsomethinのように考えます。

関連する問題