CakePHP使用两个控制器/模型

CakePHP使用两个控制器/模型,php,cakephp,cakephp-model,Php,Cakephp,Cakephp Model,首先,我对这个问题的名称感到抱歉,我很难弄清楚该怎么称呼它: 我的问题是,我有以下两个数据表: Users Employees. 这两个数据表以1对1的关系连接 现在,它们都有一个模型、一个视图和一个控制器。现在我的问题有点分为两部分首先是困难的部分: 每当员工想要创建新用户(新员工)时,他必须先将数据插入users表中的两个表中,然后在获得user\u id后在employee表中添加一条记录 employee表如下所示: users_idUsers client_id 其中users\

首先,我对这个问题的名称感到抱歉,我很难弄清楚该怎么称呼它:

我的问题是,我有以下两个数据表:

Users

Employees.
这两个数据表以1对1的关系连接

现在,它们都有一个模型、一个视图和一个控制器。现在我的问题有点分为两部分首先是困难的部分:

每当员工想要创建新用户(新员工)时,他必须先将数据插入
users
表中的两个表中,然后在获得
user\u id
后在
employee
表中添加一条记录

employee表如下所示:

users_idUsers client_id
其中
users\u idUsers
是用户表中的
userid

我该怎么做?是否可以将其他模型的功能添加到我的员工模型中

第二个问题是这个问题的延伸,相对简单。。我想显示所有员工,但是视图应该与用户连接,以便您可以在视图中看到人员的用户名


应该说,我对蛋糕很陌生,所以我希望你们中的一些人能够帮助我。

你们想要的是将两个模型链接在一起。CakePHP有一个可靠的关系映射器,它可以为您完成所有这些,而无需“从上次插入中获取id并使用它做其他事情”

如果我没弄错的话,简单地说,你的问题是:

An Employee hasMany users

A User belongs to one Employee
对于一对多模型关系,CakePHP有一个称为“hasMany”的东西:

这与用户可以发表许多评论的方式是一样的;一名员工可以创建多个用户

在用户和员工之间关系的另一面,您需要一个“belongsTo”映射,这样您就知道用户是由某个员工添加的:

这样,您可以通过搜索“通过用户”来查找添加了“用户X”的员工

当您将模型映射到一起时,检索数据(如findBy:)和管理模型关系等事情就会变得容易得多,因为您不必考虑如何将关系链接在一起(这就是上面概述的模型映射的目的),而只需考虑要检索的内容

反过来,它允许你凭直觉做类似的事情

$this->Employee->find('all', array(
            'recursive' => 1,
            'fields' => array('employee.name, employee.age')
            ));
或者,如果您想找到添加用户“Sarah”的员工

这将返回一个与员工关联的数组


作为旁注:递归=1的使用有点过时。这允许您根据需要注入某种模型。这超出了这个问题的范围,但我想我应该提一下

那么,我必须将这种关系放在两个模型中,还是只放在其中一个模型中?当我添加代码时,我得到以下错误:SQL查询:选择
Employee
users\u idUsers
Employee
客户id,
User
id
User
用户名,
用户
密码
用户
角色,
用户
创建,
用户
修改
系统博客网站测试
员工作为
员工
左加入
系统博客网站测试
用户(
User
employee\u id
=
employee
users\u id用户
)其中1=1限制20,但我的sql语句假定在User.User.id=employees.users\u idUsers上加入每个模型中的关系。此外,您还需要根据cakePHP约定命名数据库字段。因此,您只需命名列User\u id,而不是users\u idUsers。我已修改了答案。请重新查看。
$this->Employee->User->find('all', array(
'conditions' => array('User.name' => 'Sarah'),
'fields' => 'Employee.*',
'recursive' => 0))