使用 MVC 框架时,强烈建议遵循其约定。因此,一些更改可能对您有益。
您正在寻找它的“用户”表和“能力”表 * 之间的 HABTM(拥有并属于许多)关联。我猜,根据你的表的设计,一个用户可以有多种能力,否则你应该检查 hasMany 关联。
它应该是这样的:
表habilities:select * from habilities;
+----+------------+----------------------+----------+
| id | category | subcategoy | created | modified |
+----+------------+------------+---------+----------+
| 1 | Programmer | ASP | | |
| 2 | Programmer | PHP | | |
| 3 | Musician | Classical | | |
+----+------------+------------+---------+----------+
表用户:select * from users;
+----+-------+---------------------+---------------------+
| id | name | created | modified | **
+----+-------+---------------------+---------------------+
| 1 | Roy | 2012-08-15 02:52:18 | 2013-01-17 03:25:28 |
| 2 | Ben | 2012-11-10 03:36:12 | 2012-11-10 03:36:12 |
+----+-------+---------------------+---------------------+
HABTM 的关系表:select * from habilities_users;
+----+-------------+-------------------+----------+
| id | hability_id | user_id | created | modified |
+----+-------------+---------+---------+----------+
| 1 | 1 | 2 | | |
| 2 | 2 | 1 | | |
+----+-------------+---------+---------+----------+
查看 habilities_users 中的参考列,它们是单数的,带有 _id 后缀以与 CakePHP 一起使用。
定义模型类也很重要,因为它是您定义所有关联的地方。
应用程序/模型/User.php
<?php
class User extends AppModel {
public $hasAndBelongsToMany = array('Hability');
}
应用程序/模型/Hability.php
<?php
class Hability extends AppModel {
public $hasAndBelongsToMany = array('User');
}
表 habilities_users 不需要模型文件,其行为和属性隐含在其关联模型的声明中。
* 使用这些名称也是 CakePHP 的方式。[链接]
** 在每个表中添加“created”和“modified”将自动为每条记录存储这些事件。