对 Kohana ORM 有帮助吗?

Posted

技术标签:

【中文标题】对 Kohana ORM 有帮助吗?【英文标题】:Help with Kohana ORM? 【发布时间】:2010-01-29 05:58:15 【问题描述】:

使用 ORM,我希望能够加载所有发布的、用户发表评论的文章。

cmets 表

comment_id
user_id
article_id
etc....

使用 ORM,我可以访问用户发布的所有文章,但我如何才能访问用户评论过的所有文章?

谢谢

编辑:

另一个问题是,如果用户对同一篇文章进行两次访问,该文章将显示两次。我如何从另一个对象中更改一个对象的 group by 子句?

另外,我如何改变一个对象与另一个对象的顺序?

我正在使用 2.3.4。

【问题讨论】:

您使用的是什么版本的 Kohana? 【参考方案1】:

在伪代码中,试试这个...

在文章模型中,有$has_many = array('comments');

在评论模型中,有$belongs_to = array('article');

在你查询的代码中:

.

$comments = ORM::factory('comment')
                ->where('user_id', $user_id);
                ->find_all();

foreach($comments as $comment)

    $article_id = $comment->article->id;

抱歉,当$user_id 在一篇文章中多次评论时,这将无法解决重复的文章条目...您可能需要在此基础上进行更多研究。

【讨论】:

【参考方案2】:

kohana 中的 ORM 主要用于简单任务。虽然我确信在 ORM 中可以做到这一点,但我宁愿使用普通查询来完成更复杂的任务:

$this->db = Database::instance();
$this->db->query("
    select
        user_id
        article_id
        id as comment_id
    from
        comments
    left join
        articles
    on
        articles.id = comments.article_id
    where
        user_id = $user_id
    group by
        comments.article_id
");

如果我没有犯任何错误,这样的事情应该可以完成

【讨论】:

以上是关于对 Kohana ORM 有帮助吗?的主要内容,如果未能解决你的问题,请参考以下文章

Kohana ORM 的订单结果

Kohana 3.0.x ORM:读取数据透视表中的其他列

Kohana 3.1 都有哪些可用的 ORM 解决方案?

Kohana ORM 和验证,有问题

Kohana Javascript帮助程序

Kohana 3 ORM 关系问题