如何解决如何获取帖子评论数以显示在后端帖子列表中?
| 如果有帮助,这是我的帖子和评论架构:BlogPost:
actAs:
Timestampable: ~
I18n:
fields: [title,body]
tableName: blog_posts
columns:
#id: { type: integer(4),primary: true,autoincrement: true }
user_id: { type: integer }
title: { type: string(255) }
body: { type: text }
relations:
User:
type: one
class: sfGuardUser
local: user_id
foreign: id
Comments:
type: many
class: BlogComment
local: id
foreign: post_id
BlogComment:
actAs:
Timestampable: ~
tableName: blog_comments
columns:
#id: { type: integer(4),autoincrement: true }
post_id: { type: integer }
user_id: { type: integer }
body: { type: text }
relations:
Post:
type: one
class: BlogPost
local: post_id
foreign: id
这是我的Post Query类:
class BlogPostQuery extends Doctrine_Query {
/**
*
* @param Doctrine_Connection $conn
* @param string $class
* @return BlogPostQuery
*/
public static function create($conn = null,$class = null) {
return parent::create($conn,\'BlogPostQuery\')
->from(\'BlogPost p\');
}
/**
*
* @param string $fields
* @return BlogPostQuery
*/
public function addSelf($fields = \'p.*\') {
return $this
->addSelect($fields);
}
/**
*
* @param string $fields
* @return BlogPostQuery
*/
public function addUsers($fields = \'u.*\') {
return $this
->addSelect($fields)
->innerJoin(\'p.User u\')
->addGroupBy(\'u.id\');
}
/**
*
* @param string $fields
* @return BlogPostQuery
*/
public function addComments($fields = \'pc.*\') {
return $this
->addSelect($fields)
->leftJoin(\'p.Comments pc\')
->addGroupBy(\'p.id\');
}
public function addCommentsCount($alias = \'nb_comments\') {
return $this
->addSelect(sprintf(\'COUNT(pc.id) as %s\',$alias))
->addGroupBy(\'p.id\');
}
}
这是我的Post Table类:
class BlogPostTable extends Doctrine_Table
{
/**
* Returns an instance of this class.
*
* @return object BlogPostTable
*/
public static function getInstance()
{
return Doctrine_Core::getTable(\'BlogPost\');
}
public static function findAllWithCountComments() {
return BlogPostQuery::create()
->addSelf()
->addUsers()
->addComments()
->addCommentsCount()
->execute();
}
}
所以在列表配置的generator.yml中,我这样写:
list:
title: Blog Posts Managment
display: [id,title,User,nb_comments]
table_method: findAllWithCountComments
但是id不起作用并抛出错误:
未知记录属性/相关
\“ BlogPost \”上的组件\“ nb_comments \”
另外,对数据库的查询过多。
那么如何克服这个错误并获得每个帖子的评论数呢?解决方法
您需要将方法添加到BlogPost类中以获取nb_comments
// BlogPost class
public function getNbComments()
{
// return number of comments
}
请参阅http://www.symfony-project.org/gentle-introduction/1_4/en/14-Admin-Generator中的“自定义字段”部分。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。