首先,我很抱歉这个问题的名称我很难弄清楚该怎么称呼:
这是我的问题,我有以下两个数据表:
Users
Employees.
这两个数据表以1对1的关系连接
现在这两个都有一个模型视图和一个控制器。现在我的问题有点分为两部分,首先是困难部分:
每当员工想要创建新用户(新员工)时,他必须先将数据插入users
表中的两个表中,然后在user_id
中添加employee
后的记录{1}}表
员工表如下所示:
users_idUsers client_id
其中users_idUsers
是用户表中的userid
我将如何解决这个问题?是否可以将其他模型的功能添加到我的员工模型中?
第二个问题是对此的扩展并且相对简单..我想显示所有员工,但是视图应该与用户一起加入,以便您可以在视图中看到该人的用户名。
应该说我对Cake很新,所以我希望你们中的一些人能够帮助我。
答案 0 :(得分:2)
您所追求的是将两个模型链接在一起。 CakePHP有一个可靠的关系映射器,可以为您完成所有这些操作,而无需“从最后一个插入中获取id并使用它执行其他操作”。
如果我没弄错的话,你的问题就是:
An Employee hasMany users
A User belongs to one Employee
对于1对多的模型关系,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的使用是老式的。 There is something much better called "Containable"允许您根据需要注入模型。这不在这个问题的范围之内,但我会提到它。