我正在使用Kohana 3.3并尝试使用has_many
和belongs_to
在我的ORM表上建立关系。我有一个users
表,定义如下
我有另一个表userjobs
定义如下。 userjobs
有一个外键引用来自`users。{/ p>的user_id
在班级Model_User
(extends 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_Userjob
(extends 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}}。
答案 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();