0

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

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

Users

Employees.

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

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

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

员工表如下所示:

users_idUsers client_id

用户表users_idUsers在哪里userid

我将如何解决这个问题?是否可以将另一个模型的功能添加到我的员工模型中?

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

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

4

1 回答 1

2

您所追求的是将两个模型链接在一起。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 有点过时了。有一个更好的东西叫做“可包含”,它允许你根据你的需要注入模型。这超出了这个问题的范围,但我想提一下。

于 2013-08-09T10:06:27.317 回答