【问题标题】:ORM Relation CachingORM 关系缓存
【发布时间】:2011-06-28 17:11:31
【问题描述】:

没有不用的词,我需要一些建议。

我正在基于 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 方法返回:$user->articles->find_all();

到目前为止一切都很好,一切都非常完美。我不太确定我使用$_ignored_columns 的方法是否正确,如果不是,请告诉我如何解决它的建议。

但是,我遇到了缓存问题。一般来说,一切正常,期待文章。它只是被缓存忽略(不保存在缓存文件中)。我也尝试单独缓存它 - 仍然没有运气。

有什么建议吗?

【问题讨论】:

    标签: php database orm kohana


    【解决方案1】:

    忽略的列只是模型中可以拥有的一些“虚构”字段,ORM 不会尝试在 save() 上保存这些字段(例如 Model_Auth_User 中的 password_confirm 字段)

    我真的不明白为什么要缓存文章,因为它并没有多大意义,尽管您必须手动执行(例如添加额外的 get_articles() 方法,该方法将检查当前加载的缓存是否存在文章并返回它),但你会无缘无故地让自己头疼(查询真的有多慢,它是通过数据透视表的主键选择?)。

    ORM 默认不支持任何缓存(表列除外)。

    【讨论】:

    • 我相信函数 ->cached() 会传递到数据库模块,如果您在 Kohana::init() 中将缓存设置为 true,它会执行一些基本缓存
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2015-09-22
    • 1970-01-01
    • 2011-08-16
    • 2011-08-15
    • 2013-01-27
    相关资源
    最近更新 更多