CakePHP模型关系在同一个表上有2个外键

时间:2014-07-22 15:27:36

标签: php cakephp cakephp-model

我有这个数据库设计

Applicant Table
id | country_id | country_now_id

Country Table
id | name

country_id是Country Table的FK,country_now_id也是Country Table的FK。我的问题是我如何在模型关系中写这个?

我有这段代码:

class Applicant extends AppModel { 
  public $belongsTo = array(
                      'Country'=>array(
                          'className'=>'Country',
                          'foreignKey'=>'country_id'
                        ),

                      );
                      .....

我不知道如何添加country_now_id并将其置于该关系中。我甚至不确定使用$belongsTo是否正确。我仍然是CakePHP框架的新手。非常感谢您的帮助!

谢谢! :)

2 个答案:

答案 0 :(得分:4)

更新:我设法解决了这个问题

  public $belongsTo = array(
                        'Job'=>array(
                          'className'=>'Job',
                          'foreignKey'=>'psm_id',
                        ),
                      'Country'=>array(
                          'className'=>'Country',
                          'foreignKey'=>'country_id'
                        ),
                        'NowCountry'=>array(
                          'className'=>'Country',
                          'foreignKey'=>'now_country'
                        ),
                      );

答案 1 :(得分:2)

尝试

class Applicant extends AppModel { 
    public $belongsTo = array(
                  'Country'=>array(
                      'className'=>'Country',
                      'foreignKey'=>'country_id'
                    ),
                  'CountryNow' => array(
                      'className' => ' Country',
                      'foreignKey' => 'country_now_id'
                  )

                  );
                  .....

这样,如果你这样做

$this->Applicant->find('all', array('contain'=>array('Country', 'CountryNow')
例如,你会得到像

这样的东西
Applicant1
  Country
  CountryNow
Applicant2
  Country
  CountryNow

您正在以正确的方式使用belongsTo ...现在。但除非你向我们解释你为什么要使用这种关系,否则我们实际上无法确定。例如,如果您希望一个申请人拥有两个国家,那么好,您就是好人。但申请人是否有可能拥有两个以上的国家?如果发生这种情况,那么模型的结构将变得很痛苦。如果可以,也许重新考虑逻辑,如果没有,让我们希望总有两个国家。