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

如何在cakephp中同时使用两个关联,cakephp,Cakephp,我正在使用CakePHP2.x 我的数据库中有两个表用户和作业, 在users表中,我保存了两种类型的用户job candidate和company在这种情况下,我发现我的self-facing表之间存在两种关系: (1,n)用户可以添加(0,1)个作业。(此处的用户角色为公司) 许多(1,n)用户可以申请许多(1,n)工作。(候选人) 我可以在两种型号之间同时使用belongsTo和HABTM(HasandBELONGTOMANY)吗? 像这样: 工作模式 Class Job extends

我正在使用CakePHP2.x 我的数据库中有两个表用户和作业, 在users表中,我保存了两种类型的用户job candidate和company在这种情况下,我发现我的self-facing表之间存在两种关系:

  • (1,n)用户可以添加(0,1)个作业。(此处的用户角色为公司)
  • 许多(1,n)用户可以申请许多(1,n)工作。(候选人)
  • 我可以在两种型号之间同时使用belongsTo和HABTM(HasandBELONGTOMANY)吗? 像这样:

  • 工作模式

    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-显示用户应用。

    您可以这样做,但这两个关联需要不同的别名。因此,您可以将申请
    工作的
    用户
    称为
    申请人
    :-

    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,
    申请人
    通过
    className
    属性使用
    用户
    模型。对于您的
    belongsTo
    关联,您不需要为
    用户指定
    类名
    ,因为它与别名相同,与型号名称相同,但为了清楚起见,我将其保留在了中


    您也不需要指定
    $usetable='jobs
    ,因为使用正确的命名约定意味着这一点。

    为什么不将用户和公司分开?