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

时间:2015-07-02 08:53:19

标签: cakephp

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

  1. (1,n)用户可以添加(0,1)个工作。 (这里的用户角色是公司)
  2. 许多(1,n)用户可以申请许多(1,n)个工作。 (候选人)
  3. 我可以在两个模型之间同时使用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');
      
    3. 如何根据第一个或第二个上下文检索数据 1-显示公司的所有工作。 2-显示用户适用。

1 个答案:

答案 0 :(得分: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'
        )
    );

}

请注意,您需要告诉Cake Applicant通过User属性使用className模型。对于您的belongsTo关联,您不需要为className指定User,因为它与模型名称相同,但我已将其保留为了清楚起见。

您也不需要指定$usetable = 'jobs,因为这是使用正确的命名约定所暗示的。