仅查看CakePHP中的登录用户数据

时间:2014-01-24 07:22:53

标签: php cakephp login

我有一个leave_applications表和一个employees表。当员工申请与leave_applications表一起存储的休假以及员工ID。 当员工下次登录时,我正在显示他迄今已申请的休假申请。但问题是所有休假申请都在展示(即使是其他员工),但情况并非如此。那么如何限制只有登录的员工看到他的请假申请? 我的LeaveApplicationsController.php页面显示了叶子:

public function index()
    {
        $this->LeaveApplication->recursive = 0;
        $leavereqs = $this->set('leaveApplications', $this->Paginator->paginate());
        //return $this->LeaveApplication->Employee->find('all', array('conditions' => array('LeaveApplications.employee_id'=>$this->Auth->user('id'))));
        return $this->LeaveApplication->find('all');
        //echo $log_user_id = $this->Auth->user('role'); die();
        //return $this->LeaveApplication->Employee->query("SELECT * FROM leave_applications WHERE employee_id = '$log_user_id'");
        //return $this->LeaveApplication->Employee->query("SELECT la.leave_type, la.subject, la.detail, la.from_date, la.to_date, la.applied_on, la.leave_status, la.leave_status_date FROM leave_applications la INNER JOIN employees e ON la.employee_id = e.id INNER JOIN users u ON e.user_id = u.id WHERE la.employee_id = '$log_user_id'");
    }

请注意,我在LeaveApplicationsController.php中的代码不在EmployeesController.php中,因为当员工点击所有叶子按钮/链接时,将调用此控制器的索引视图。 注释代码是我尝试过的,但它们都没有工作。

4 个答案:

答案 0 :(得分:0)

确保Auth的员工ID正常。

查询离职表,其中employee_is是登录用户

$employeeId = $this->Auth->user('id');
return $this->LeaveApplication->findAllByEmployeeId($employeeId);

答案 1 :(得分:0)

索引函数必须类似于:

public function index()
        {   
            $id = "GET EMPLOYEE ID FROM SESSION OR BY PASSING ARGUMENT";
            $this->LeaveApplication->recursive = 0;
            $conditions = array("employee.id" => "$id");
            $leavereqs = $this->set('leaveApplications', 
                           $this->Paginator->paginate('MODEL NAME', $conditions)
                          );

        }

答案 2 :(得分:0)

要获取已登录Employee的应用程序,您应在find函数中指定Employee_id:

public function index(){

  //Make sure the Employee is logged in
  $id = $this->Auth->user('id');
  if($id){

     // get leave applications of logged in Employee
     $leavereqs = $this->LeaveApplication->find('all', array(
         'conditions'=> array('Employee_id'=>$id)
    ));

    $this->set('leavereqs',$leavreqs');
  }
}

如果它不起作用,请调试$ this-> Auth-> user(),并确保在数据库中指定Employee_id离开应用程序。

答案 3 :(得分:0)

您可以使用这样的魔术查找类型:

findAllByEmployeeId($emp_id)

仅在数据库中的字段名称为employee_id时才会出现。 另一种获取数据的方法是:

find('all',array('conditions' => array('employee_id' => $emp_id));