对 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 有帮助吗?的主要内容,如果未能解决你的问题,请参考以下文章