gpt4 book ai didi

银条 ORM : sort by number of $belongs_many_many relation

转载 作者:行者123 更新时间:2023-12-01 11:29:50 25 4
gpt4 key购买 nike

如何在查询中获取最活跃的博客标签?

我有这两个数据对象:

class BlogTag extends DataObject {

//...

/**
* @var array
*/
private static $belongs_many_many = array(
'BlogPosts' => 'BlogPost',
);

class BlogPost extends Page {

//...

/**
* @var array
*/
private static $many_many = array(
'Tags' => 'BlogTag',
);

现在我想知道如何获得一个包含所有 BlogTag 的 DataList,这些 BlogTag 按与它们相关的博文数量排序。这是我已经拥有的,但不知何故我不知道如何按 BlogPosts.Count() 排序:

public function getPopularBlogTags($limit = 5) {
$tags = BlogTag::get()
->sort('BlogPosts.Count()') //doesn't work
->limit($limit);

return $tags;
}

最佳答案

在 IRC 的帮助下找到了解决方案(感谢 barry 和 mark)

public function getPopularBlogTags($limit = 5) {
$tags = BlogTag::get()
->setQueriedColumns(['ID', 'Title', 'Count(*)'])
->leftJoin('BlogPost_Tags','bpt.BlogTagID = BlogTag.ID','bpt')
->sort('Count(*) DESC')
->alterDataQuery(function($query){
$query->groupBy('BlogTag.ID');
})
->limit($limit);

return $tags;
}

在模板中:

   <% loop $PopularBlogTags %>
<a href="$Link" title="$Title">$Title ($BlogPosts.Count())</a>
<% if not $Last %> | <% end_if %>
<% end_loop %>

关于银条 ORM : sort by number of $belongs_many_many relation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33411036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com