ORM关系缓存

时间:2011-02-16 22:24:38

标签: php database orm kohana

没有闲言,我需要一些建议。

我正在构建基于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的态度是否正确,如果没有,请告诉我如何解决它。

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

我真的不明白你为什么要缓存文章,因为它没有多大意义,虽然你必须手动完成(比如添加额外的get_articles()方法,它会检查当前是否有缓存文章并返回它),但是你会因为没有特别的原因让自己头痛(查询真的有多慢,它是通过数据透视表的主键选择?)。

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