2014-04-24 18 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();