0
如果有幫助,這是我的文章和評論的模式:如何獲取發佈評論的數量以顯示在後端帖子列表中?
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), primary: true, autoincrement: true }
post_id: { type: integer }
user_id: { type: integer }
body: { type: text }
relations:
Post:
type: one
class: BlogPost
local: post_id
foreign: id
這是帖子的查詢類:
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');
}
}
這是帖子表類:
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不能正常工作,並拋出錯誤:
Unknown record property/related component "nb_comments" on "BlogPost"
也有太多的查詢數據庫。
那麼如何克服這個錯誤並獲得每個帖子的評論數?
@vitalyp部分這篇幫助博客帖子類? – 2011-04-21 17:13:47