2014-07-04 7 views
0

У меня есть две таблицы. заявителей и заявителей.Kohana 2.3 установить имеет одно отношение между двумя таблицами с первичными ключами, не названными как «id»

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

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

Я поставил этот код в своих Applicants_Model, он не работал.

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

Я попытался переименовать первичные ключи в «ид» и достиг своего желаемого результата, поставив этот код в моем Applicants_Model.

protected $has_one = array('applicant_account'); 

А затем доступ из него данные этого

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

Пожалуйста, помогите меня.Я должны знать, как иметь HAS_ONE отношения в течение двух таблиц с первичными ключами, не названных в «ID»

Applicant_Model

<?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'; 

} 

Ap plicant_Account_Model

<?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>'; 
+0

Ох. просто напоминание. Я использую kohana 2.3, и я видел свое решение от kohana 3.2, поэтому Im действительно не уверен, что он будет работать ahhaha –

ответ

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 и затем использовать его, чтобы переопределить имя из внешний ключ. Надеюсь, этот ответ поможет другим.

+0

Уведомление. Это для версии Kohana 2.x и Im, использующей 2.3 –