0

我的数据库中有一些信息,我希望在将它们传递给控制器​​和视图之前能够对其进行操作。例如,我有一个想要变成年龄的出生日期。

这是我到目前为止所拥有的:

$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()如果这会使工作更容易?

4

2 回答 2

2

制作一个将生日转换为年龄的函数:

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 = $this->model->getuserobject()
$birthdate = $userobject->birthdate

希望这会有所帮助,请随时提出更多问题=)

于 2013-04-10T14:18:39.673 回答
0

我不确定这是否有帮助。我会在这样的模型中添加一个小函数:

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]);

于 2013-04-10T14:21:58.983 回答