2014-04-24 89 views
0

我正在使用Kohana 3.3,並試圖使用has_manybelongs_to在我的ORM表上建立關係。我有其被定義爲下面Kohana - has_many和belongs_to不能正常工作

enter image description here

我具有如下所定義的另一表格userjobs一個users表。 userjobs有一個外鍵引用來自`用戶的user_id

enter image description here

在類Model_Userextends Model_Auth_User),我已經定義像

protected $_has_many = array(
    'user_tokens' => array('model' => 'user_token'), 
    'roles' => array('model' => 'role', 'through'=> 'roles_users'), 
    'jobs' => array('model' => 'Userjob','foreign_key' => 'user_id'), 
); 

的關係,並在類Model_Userjobextends ORM),以下語句被寫入

protected $_belongs_to = array(
    'user' => array('model' => 'user') 
); 

但是,當我嘗試訪問像下面這樣的工作時,它正在拋出一個除了它說,jobsModel_User

Auth::instance()->get_user()->jobs; 

我曾試圖get_user()的傾倒值是不顯示protected $_has_many數組中的工作定義。

我甚至試圖從$_has_many除去user_tokensroles,但仍has_many陣列仍保持用於角色的條目,並且當印刷-i的get_user值的user_tokens。

enter image description here

+0

你使用的是什麼db驅動程序?你確定你的具體'Model_User'是實際使用的,而不是默認的嗎? – kero

+0

'driver'=>'ORM'在Auth.php中定義。這是你需要的信息嗎? – logeeks

+0

@kingkero,請告訴我如何檢查。對不起,我是kohana場景的完全新手。 – logeeks

回答

0

我不知道,但我認爲你應該設置這樣的用戶模型關係:

protected $_has_many = array(
    'user_tokens' => array('model' => 'user_token'), 
    'roles' => array('model' => 'role', 'through'=> 'roles_users') 
); 
protected $_belongs_to = array(
    'jobs' => array('model' => 'userjob','foreign_key' => 'user_id') 
); 

,並在工作模式:

protected $_has_one = array(
    'user' => array('model' => 'userjob', 'foreign_key' => 'user_id') 
); 
+0

你能詳細說一下嗎?據我所知,一個用戶應該有__多個工作;) – kero

+0

你可以請直接給我一個工作示例,演示has_many的用法,如果有任何可用的網站? – logeeks

+0

我剛剛檢查了代碼,發現基類Model_Auth_User中有一個$ _has_many,它們與user_tokens和roles有關係。我相信這是正在使用變量,我的班級中的變量被忽略。任何線索可能是什麼原因呢? – logeeks

0

您需要在該行的末尾添加' - > find_all()'。否則,工作將被視爲一個上校。

Auth::instance()->get_user()->jobs->find_all();