繁体   English   中英

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

[英]View only the login user data in CakePHP

我有一个Leave_applications表和一个employees表。 当员工申请与员工ID一起存储在Leave_applications表中的请假时。 员工下次登录时,我将显示他到目前为止已申请的请假申请。 但是问题在于,所有休假申请(甚至来自其他员工)都在显示,事实并非如此。 那么,如何限制只有登录的员工才能看到他的请假申请呢? 我的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中有此代码,因为当员工单击所有叶子按钮/链接时,将调用此控制器的索引视图。 我尝试使用注释的代码,但是没有一个起作用。

确保来自Auth的员工ID正确。

查询请假表,employee_is是登录用户

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

索引函数必须类似:

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

        }

要获得已登录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以退出应用程序。

您可以使用以下魔术查找类型:

findAllByEmployeeId($emp_id)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM