[英]manipulating db results in codeigniter
我在我的數據庫中有一些信息,我希望能夠在將它們傳遞給控制器和視圖之前進行操作。 例如,我有一個我希望變成年齡的出生日期。
這是我到目前為止:
$sql = ('SELECT username, birthdate, profile_text FROM users WHERE id = ?');
$q = $this->db->query($sql, $this->session->userdata('user_id'));
if ($q->num_rows() === 1) {
return $q->row();
}
所以在返回之前,我想操縱對象中的birthdate
。
在這里我發現如果我傳遞一個字符串作為行的第二個參數我可以使用一個類來做它。 但是我不知道我會怎么做以及我會把這個課程放在哪里。
我還可以將結果作為帶有row_array()
的數組獲得,如果這樣可以使工作更輕松?
創建一個將出生日期轉換為年齡的函數:
public function convertToAge($birthdate){
$birthDate = explode("/", $birthDate);
$age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1],
$birthDate[2]))) > date("md") ? ((date("Y")-$birthDate[2])-1):(date("Y")-
$birthDate[2]));
return $age
}
您可以設置自定義對象來解決您的問題,如下所示:
$sql = ('SELECT username, birthdate, profile_text FROM users WHERE id = ?');
$q = $this->db->query($sql, $this->session->userdata('user_id'));
if ($q->num_rows() === 1) {
$userobject = $q->row();
}
$userobject->birthdate = $this)>convertToAge($userobject->birthdate);
return $userobject
在應用程序的其他部分,您可以檢索您的userobject並像使用任何其他對象一樣獲取生日:
$userobject = $this->model->getuserobject()
$birthdate = $userobject->birthdate
希望這有幫助,隨時提出更多問題=)
我不確定這是否有幫助。 我會在模型中添加一個小函數,如下所示:
public function datetoage()
{
$birthDate = $datetouse;
//explode the date to get month, day and year
$birthDate = explode("/", $birthDate);
//get age from date or birthdate
$age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md") ? ((date("Y")-$birthDate[2])-1):(date("Y")-$birthDate[2]));
return $age;
}
然后只需將if應用於$ age = datetoage($ row [birthdate])等查詢數據;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.