您所追求的是将两个模型链接在一起。CakePHP 有一个可靠的关系映射器,它可以为您完成所有这些工作,而无需“从最后一个插入中获取 id 并用它做其他事情”。
如果我没记错的话,简单来说你的问题是:
An Employee hasMany users
A User belongs to one Employee
对于一对多的模型关系,CakePHP 有一个叫做“hasMany”的东西:http: //book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasmany
例如,用户可以发表许多评论。一个员工可以创建多个用户。
在用户和员工之间的关系的另一面,您需要一个“belongsTo”映射,因此您知道该用户是由某个员工添加的:http: //book.cakephp.org/2.0/en/models /associations-linking-models-together.html#belongsto
这样,您可以通过搜索“通过用户”找到添加“用户 X”的员工,可以这么说。
当您将模型映射在一起时,诸如检索数据(如 findBy:http ://book.cakephp.org/2.0/en/models/retrieving-your-data.html#findby )和管理模型关系之类的事情变得更加容易因为您不必考虑如何将关系链接在一起(这就是上面概述的模型映射的用途),而是要考虑要检索的内容。
反过来,它允许您直观地做这样的事情
$this->Employee->find('all', array(
'recursive' => 1,
'fields' => array('employee.name, employee.age')
));
或者,如果您想查找添加用户“Sarah”的员工。
$this->Employee->User->find('all', array(
'conditions' => array('User.name' => 'Sarah'),
'fields' => 'Employee.*',
'recursive' => 0))
这将返回与员工的关联数组。
作为旁注:使用 recursive = 1 有点过时了。有一个更好的东西叫做“可包含”,它允许你根据你的需要注入模型。这超出了这个问题的范围,但我想提一下。