我的数据库中有一些信息,我希望能够在将它们传递给控制器和视图之前进行操作。例如,我有一个我希望变成年龄的出生日期。
这是我到目前为止所做的:
$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
。
In here I found如果我传递一个字符串作为行的第二个参数,我可以使用一个类来完成它。但是我不知道我会怎么做以及我会把这个课程放在哪里。
我还可以将结果作为带row_array()
的数组获得,如果这样可以使工作更轻松?
答案 0 :(得分: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并像使用任何其他对象一样获取生日:
$userobject = $this->model->getuserobject()
$birthdate = $userobject->birthdate
希望这有帮助,随时提出更多问题=)
答案 1 :(得分: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]);