Без неиспользуемых слов мне нужен совет.
Я создаю еще одно приложение, основанное на структуре KohanaPHP 3.0.9, влюбленный в ORM (реальный усилитель производительности!).
Я получил модель Model_User:
class Model_User extends ORM { protected $_table_name = 'users'; protected $_primary_key = 'id'; protected $_has_many = array( 'articles' => array( 'through' => 'users_articles', ), ); protected $_ignored_columns = array('articles'); }
Я пошел с тонкой философией контроллера / толстой модели, поэтому правильное место для данных является моделью в моем развитии.
Что такое $_ignored_columns
? В нескольких местах мне нужно вернуть объект $user
поэтому я возвращаю его со статьями (когда это необходимо) в виде $ user method: $user->articles->find_all()
;
Пока все хорошо, все работает отлично. Я не совсем уверен, правильный ли мой подход с $_ignored_columns
, если нет, сообщите мне, как его решить.
Однако я столкнулся с проблемой кэширования. Как правило, все работает правильно ожидать статей. Он просто игнорируется кешем (не сохраняется в файле кеша). Я также попытался кэшировать его отдельно – все равно не повезло.
Какие-либо предложения?
Игнорируемые столбцы – это всего лишь несколько «воображаемых» полей, которые вы можете иметь в модели, которую ORM не будет пытаться сохранить на save () (например, поле password_confirm в Model_Auth_User)
Я действительно не понимаю, почему вы будете кэшировать статьи, поскольку это не имеет особого смысла, хотя вам придется делать это вручную (например, добавить дополнительный метод get_articles (), который будет проверять, есть ли кэш для загруженной в данный момент статьи и возвращать это), но вы будете просто получать головную боль без особых причин (насколько медленный запрос на самом деле, это выбор по первичному ключу через сводную таблицу?).
ORM не поддерживает кэширование по умолчанию (кроме столбцов таблицы).