0

我有两张桌子。申请人和申请人帐户。

applicants
 ->applicant_id   int(11) PK
 ->name           varchar(45)

applicant_accounts 
 ->account_id     int(11) PK
 ->applicant_id   int(11) 
 ->userName       varchar(45)

我已将此代码代码放在我的申请者模型中,但它不起作用。

protected $has_one = array('applicant_account' => array('model' => 'Applicant_Account', 'foreign_key' => 'applicant_id'));

我尝试将主键重命名为“id”,并通过将此代码放入我的申请者模型中来达到我想要的结果。

protected $has_one = array('applicant_account');

然后通过这个访问它的数据

$applicant = ORM::factory('applicant', 1);
echo $applicant->name.' ----> '.$applicant->applicant_account->userName;

请帮帮我。我需要知道如何在两个主键未命名为“id”的表中建立 has_one 关系

申请人_型号

<?php defined('SYSPATH') OR die('No direct access allowed.');

class Applicant_Model extends ORM {

    protected $has_one = array('applicant_account' => array('model' => 'Applicant', 'foreign_key' => 'applicant_id'));

    protected $primary_key = 'applicant_id';

}

申请人_账户_型号

<?php defined('SYSPATH') OR die('No direct access allowed.');

class Applicant_Account_Model extends ORM {

    protected $primary_key = 'account_id';

}

testing.php(仅用于显示目的)

$applicants = ORM::factory('applicant', 1);
echo $applicant->name.' | '.$applicant->applicant_account->userName.'<br>';
4

1 回答 1

0

好吧,我的主管最近到了这里,他解决了我的问题。他将Applicant_Model中的代码更改为:

<?php defined('SYSPATH') OR die('No direct access allowed.');

class Applicant_Model extends ORM {

    protected $primary_key = 'applicant_id';
    protected $has_one = array('applicant_account');

    public function foreign_key() {

        $foreign_keys = array('applicant_account' => 'applicant_id');

        return $foreign_keys['applicant_account'];
    }

}

我真的不知道他到底做了什么,但他说他在 ORM.php 中使用了一个函数,然后用它来覆盖外键的名称。我希望这个答案对其他人有所帮助。

于 2014-07-04T10:21:16.623 回答