我有一个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中,因为当员工点击所有叶子按钮/链接时,将调用此控制器的索引视图。 注释代码是我尝试过的,但它们都没有工作。
答案 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));