Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据CakePHP中的条件从两个表中获取数据_Php_Cakephp - Fatal编程技术网

根据CakePHP中的条件从两个表中获取数据

根据CakePHP中的条件从两个表中获取数据,php,cakephp,Php,Cakephp,我有两个控制器LeaveApplicationController和EmployeesController。在LeaveApplicationsController索引操作中,我显示所有员工的休假记录。它显示良好,但我需要的是只显示登录员工离开该员工。我在休假申请表中将员工id作为外键。但我没有从employees表中获取employees_id。我还有一个users表,每个用户都有一个与之关联的员工。所以,当创建员工时,在创建该用户之前,新创建的用户id也存储在员工表中unser_id字段下。

我有两个控制器LeaveApplicationController和EmployeesController。在LeaveApplicationsController索引操作中,我显示所有员工的休假记录。它显示良好,但我需要的是只显示登录员工离开该员工。我在休假申请表中将员工id作为外键。但我没有从employees表中获取employees_id。我还有一个users表,每个用户都有一个与之关联的员工。所以,当创建员工时,在创建该用户之前,新创建的用户id也存储在员工表中unser_id字段下。因此,user_id是employees表中的外键,并唯一标识员工

这是我的LeaveApplicationController.php代码:-

public function index()
    {
        $userId = $this->Auth->user('id'); //gets current user's id
        $this->LeaveApplication->recursive = 0;
        $leavereqs = $this->set('leaveApplications', $this->Paginator->paginate());
        $employeeId = $this->Employee->find('all', array('fields'=>array('id'), 'conditions'=>array('Employee.user_id'=>$userId))); // code for getting emp id
        return $this->LeaveApplication->find('all', array('conditions'=>array('LeaveApplication.employee_id'=>$employeeId))); //code for fetching current employee record
    }
但这表明了错误。请告诉我我在哪里做的不对?我还使用$uses在LeaveApplicationsController中加载员工模型。谢谢

public function index()
    {
        $userId = $this->Auth->user('id'); //gets current user's id
        $this->LeaveApplication->recursive = 0;
        $leavereqs = $this->set('leaveApplications', $this->Paginator->paginate());
        $employeeId = $this->Employee->find('list', array('fields'=>array('id'), 'conditions'=>array('Employee.user_id'=>$userId))); // code for getting emp id
        return $this->LeaveApplication->find('all', array('conditions'=>array('LeaveApplication.employee_id'=>$employeeId))); //code for fetching current employee record
    }
find'all'将返回带有索引Employee和id的数组

Imp链接:查找“全部”、查找“第一个”和查找“列表”


谢谢你的回答,但它仍然显示错误的回声$employeeId实际上只包含一个整数。不可能$employeeId是一个id数组,请使用print_r$employeeIdAnubhav yes打印员工id,该id现在为29,但仍保留所有员工的记录,而不是id为29的员工的记录。我上一次的退货查询对吗?或者我想我需要更改这行$leavereqs=$this->set'leaveApplications',$this->Paginator->paginate;更新您的问题,显示此特定操作中的代码。你们的最后一个问题是绝对正确的,但我不确定返回的东西,我的意思是你们想做什么?谢谢。我想出来了。