Kohana - has_many和belongs_to工作不正常

时间:2014-04-24 15:53:45

标签: php kohana relationship kohana-3

我正在使用Kohana 3.3并尝试使用has_manybelongs_to在我的ORM表上建立关系。我有一个users表,定义如下

enter image description here

我有另一个表userjobs定义如下。 userjobs有一个外键引用来自`users。{/ p>的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')
);  

但是,当我尝试访问下面的作业时,它会抛出一个异常,说jobs

中没有定义Model_User
Auth::instance()->get_user()->jobs;

我曾尝试get_user()的转储值,但未在protected $_has_many数组中显示作业。

我甚至尝试从user_tokens删除roles$_has_many,但当{i的打印值为{{{I}}时,has_many数组仍然保留了条目和user_tokens的条目1}}。

enter image description here

2 个答案:

答案 0 :(得分: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')
);  

答案 1 :(得分:0)

您需要在该行的末尾添加' - > find_all()'。否则,工作将被视为col。

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