0

使用 Kohana 3,我的 User 表有一个字段,该字段引用数据库中另一个表中的字段,但是,我找不到请求用户数据的位置,因此我可以添加一个->with,以便我可以在整个过程中使用它地点。

我还在四处挖掘,这些是我到目前为止发现的部分:

在:模块/orm/classes/Kohana/Auth/ORM.php

public function get_user($default = NULL)

它调用parent::get_user($default); 所以当我查找它的 parent:modules/auth/classes/Kohana/Auth.php:74时,它正在运行:

return $this->_session->get($this->_config['session_key'], $default);

$this->_session使用以下方法创建:

Session::instance($this->_config['session_type']);

我追查到:system/classes/Kohana/Session.php

我想我在那里走到了尽头。


我也尝试过搜索ORM::factory('User'),但是,据我所知,它仅用于登录。

get_user()返回 Model_User 的对象,但我不太确定如何使用它来帮助我。

4

3 回答 3

0

问题来自这样一个事实,即当您登录时,数据被缓存并且在您重新登录之前不会再次提取。所以需要在登录方法上加入表。

于 2013-07-11T04:24:43.023 回答
0

在 modules/auth/classes/model/auth/user.php (phew) 在我可能已过时的 Kohana 3 安装中的第 86 行:

// Attempt to load the user
$this->where($fieldname, '=', $array['username'])->find();

鉴于 Model_Auth_User 扩展了 ORM,这似乎是它为用户查询数据库的地方,并且希望您可以在其中添加您的要求。

于 2013-07-01T23:20:57.857 回答
0

也许使用_load_with并始终与用户一起加载另一个表?

class Model_User extends Model_Auth_User
{

    protected $_table_columns = array(
        'id' => '',
        'username' => '',
        'email' => '',
        'password' => '',
        'logins' => '',
        'last_login' => '',
        'some_id' => '',
    );

    protected $_belongs_to = array(
        'some_model' => array('foreign_key' => 'some_id'),
    );

    protected $_load_with = array(
        'some_model',
    );
于 2013-07-02T11:21:37.523 回答