我如何在 cakephp 中同时使用两个关联

how can i use two associations at once in cakephp

我正在使用 cakephp 2.x 我的数据库中有两个 tables USERS 和 JOBS, 在用户 table 中,我保存了两种类型的用户求职者和公司 在这种情况下,我发现自己面临着 table 之间的两种关系:

  1. (1,n) 个用户可以添加 (0,1) 个职位。 (这里的用户角色是公司)
  2. 许多 (1,n) 用户可以申请许多 (1,n) 个职位。 (候选人)

我可以在两个模型之间同时使用 belongsTo 和 HABTM(hasAndBelongsToMany) 吗? 像这样:

  1. 工作模式

    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';
    
  2. 用户模型

    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,因为这是通过使用正确的命名约定来暗示的。