Добавить данные таблицы вошедшему в систему пользователю

Используя Kohana 3, у меня есть таблица User с полем, которое ссылается на поле из другой таблицы в базе данных, однако я не могу найти, где запрашиваются пользовательские данные, поэтому я могу добавить к нему ->with, чтобы я мог использовать его повсюду сайт.

Я все еще копаюсь, и вот те части, которые я нашел до сих пор:

в: модули/orm/классы/Kohana/Auth/ORM.php

public function get_user($default = NULL)

он вызывает parent::get_user($default);, поэтому, когда я смотрю его родитель: 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, но я не совсем уверен, как с этим работать, чтобы мне помочь.


person Francis Lewis    schedule 01.07.2013    source источник


Ответы (3)


В модулях/auth/classes/model/auth/user.php (фух) есть строка 86 в моей, возможно, устаревшей установке Kohana 3:

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

Учитывая, что Model_Auth_User расширяет ORM, похоже, именно здесь он запрашивает базу данных для пользователя и, надеюсь, где вы можете добавить свои требования.

person vidario    schedule 01.07.2013

Может быть, использовать _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',
    );
person matino    schedule 02.07.2013

Проблема заключалась в том, что при входе в систему данные кэшируются и не извлекаются снова, пока вы не войдете в систему повторно. Таким образом, таблицы должны были быть объединены в методы входа в систему.

person Francis Lewis    schedule 11.07.2013