CI如何处理没有返回的查询?

时间:2014-11-12 13:20:20

标签: php mysql codeigniter

我正在为我的工作场所建立一个签名表格,用户可以登录并计算他们的工作时间。

我已完成此操作,以便用户登录时间表并可点击与每个登录和退出时段相关的相应按钮,例如早上休息,所有按钮都使用更新,第一个按钮开始一天是插入按钮,它创建带有今天日期的记录,当前时间之后每个按钮按下更新该记录与当天相关的新时间。

插入按钮('登录')每次创建一条新记录,因此需要禁用,因此我尝试使用模型功能来检查是否存在包含人员ID和日期的记录,如果然后它不会执行正常插入作为当天的新记录,如果它不希望它返回类似FALSE的东西,我可以在我的控制器中检查它以指向不同的页面而不是一个标准的成功页面。

这是我的模特功能:我猜测我需要返回一个变量,不太确定。

function clock_in($id, $time, $date) {

    $check -> db -> get_where('timesheet',array('datez' => $date, 'staff_id' =>$id));

    if ($check -> num_rows() > 0) {
        $data = array('id' => null, 'staff_id' => $id, 'clock_in_time' => $time, 'clock_out_time' => null, 'break1_out' => null, 'break1_in' => null, 'lunch_out' => null, 'lunch_in' => null, 'break2_out' => null, 'break2_in' => null, 'datez' => $date);

        $this -> db -> insert('timesheet', $data);
    } else {
        return $check;
    }

}

这是我的控制者:

function clock_in() {

    $session_data = $this -> session -> userdata('logged_in');
    $data['id'] = $session_data['id'];
    $data['time'] = date("h:i");
    $data['date'] = date("y-m-d");

    $this -> timesheet -> clock_in($data['id'], $data['time'], $data['date']);

    $this -> load -> view('timesheet/Clock_in');
}

我还没有尝试过这一部分,我不确定如何检查此变量是否为空,然后加载不同的vue而不插入任何内容。

所有解决方案和感激,我只需要正确的方法来做到这一点。

2 个答案:

答案 0 :(得分:2)

进行以下更改:

function clock_in($id, $time, $date) {

$check -> db -> get_where('timesheet',array('datez' => $date, 'staff_id' =>$id));
$data = array();
if ($check -> num_rows() > 0) {
    $data = array('id' => null, 'staff_id' => $id, 'clock_in_time' => $time, 'clock_out_time' => null, 'break1_out' => null, 'break1_in' => null, 'lunch_out' => null, 'lunch_in' => null, 'break2_out' => null, 'break2_in' => null, 'datez' => $date);

    $this -> db -> insert('timesheet', $data);
} 

return $data; // this will be either empty or will contain data
}

在控制器中:

function clock_in() {

$session_data = $this -> session -> userdata('logged_in');
$data['id'] = $session_data['id'];
$data['time'] = date("h:i");
$data['date'] = date("y-m-d");

$data = $this -> timesheet -> clock_in($data['id'], $data['time'], $data['date']);
if(empty($data)){
    $this -> load -> view('timesheet/Clock_xyz'); // View to load when no data is returned
}else {
    $view['data'] = $data
    $this -> load -> view('timesheet/Clock_in', $view); // view to load when data is returned
   }
}

答案 1 :(得分:0)

我不确定我是否理解你的问题,但如果我是对的:

您可以使用Code Igniter中的以下功能:

$result = $this->db->query("Your query")->row()->id;

您可以直接检查它是否为空,如果它存在,您的对象将被直接放入$ result。

希望这会有所帮助。

修改:您可以查看此链接以查看更多选项:http://magentohostsolution.com/get-first-row-in-codeigniter-return-database-query/