我如何在 cakephp 中同时使用两个关联
how can i use two associations at once in cakephp
我正在使用 cakephp 2.x
我的数据库中有两个 tables USERS 和 JOBS,
在用户 table 中,我保存了两种类型的用户求职者和公司 在这种情况下,我发现自己面临着 table 之间的两种关系:
- (1,n) 个用户可以添加 (0,1) 个职位。 (这里的用户角色是公司)
- 许多 (1,n) 用户可以申请许多 (1,n) 个职位。 (候选人)
我可以在两个模型之间同时使用 belongsTo 和 HABTM(hasAndBelongsToMany) 吗?
像这样:
工作模式
Class Job extends AppModel{
public $belongsTo=array(
'User'=> array(
'className' => 'User',
'foreignKey' => 'user_id',
'counterCache'=>true,
'fields'=>array('id','username','role'),
)
);
public $hasAndBelongsToMany=array('User');
public $usetable = 'jobs';
用户模型
Class User extends AppModel{
public $hasAndBelongsToMany=array('Job');
如何根据第一个或第二个上下文检索数据
1- 显示公司的所有职位。
2- 显示用户申请。
你可以这样做,但两个协会需要不同的别名。因此,您可以将 User
申请 Job
称为 Applicant
:-
class Job extends AppModel {
public $belongsTo = array(
'User'=> array(
'className' => 'User',
'foreignKey' => 'user_id',
'counterCache' => true,
'fields' => array('id', 'username', 'role'),
)
);
public $hasAndBelongsToMany = array(
'Applicant' => array(
'className' => 'User'
)
);
}
请注意,您需要通过 className
属性 告诉 Cake Applicant
使用 User
模型。对于您的 belongsTo
关联,您不需要为 User
指定 className
,因为它与别名相同,与型号名称相同,但我将其保留在清晰度。
您也不需要指定 $usetable = 'jobs
,因为这是通过使用正确的命名约定来暗示的。
我正在使用 cakephp 2.x 我的数据库中有两个 tables USERS 和 JOBS, 在用户 table 中,我保存了两种类型的用户求职者和公司 在这种情况下,我发现自己面临着 table 之间的两种关系:
- (1,n) 个用户可以添加 (0,1) 个职位。 (这里的用户角色是公司)
- 许多 (1,n) 用户可以申请许多 (1,n) 个职位。 (候选人)
我可以在两个模型之间同时使用 belongsTo 和 HABTM(hasAndBelongsToMany) 吗? 像这样:
工作模式
Class Job extends AppModel{ public $belongsTo=array( 'User'=> array( 'className' => 'User', 'foreignKey' => 'user_id', 'counterCache'=>true, 'fields'=>array('id','username','role'), ) ); public $hasAndBelongsToMany=array('User'); public $usetable = 'jobs';
用户模型
Class User extends AppModel{ public $hasAndBelongsToMany=array('Job');
如何根据第一个或第二个上下文检索数据 1- 显示公司的所有职位。 2- 显示用户申请。
你可以这样做,但两个协会需要不同的别名。因此,您可以将 User
申请 Job
称为 Applicant
:-
class Job extends AppModel {
public $belongsTo = array(
'User'=> array(
'className' => 'User',
'foreignKey' => 'user_id',
'counterCache' => true,
'fields' => array('id', 'username', 'role'),
)
);
public $hasAndBelongsToMany = array(
'Applicant' => array(
'className' => 'User'
)
);
}
请注意,您需要通过 className
属性 告诉 Cake Applicant
使用 User
模型。对于您的 belongsTo
关联,您不需要为 User
指定 className
,因为它与别名相同,与型号名称相同,但我将其保留在清晰度。
您也不需要指定 $usetable = 'jobs
,因为这是通过使用正确的命名约定来暗示的。