我在推动ORM方面还是比较新的,我使用的版本有点旧(1.x)。我正在开发的应用程序无论如何都不能更新。我有以下模式:
<table name="blog">
<column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
<column name="title" type="varchar" size="100" required="true" />
<column name="user_id" type="integer" required="false" />
<column name="author" type="varchar" size="100" required="true" default="Anonimous" />
<column name="body" type="longvarchar" required="true" />
<column name="publish_date" type="timestamp" required="true" />
<behavior name="timestampable" />
<behavior name="soft_delete" />
<behavior name="sluggable">
<parameter name="slug_pattern" value="{Title}" />
<parameter name="replace_pattern" value="/[^\w]+/u" />
<parameter name="replacement" value="-" />
<parameter name="separator" value="-" />
<parameter name="permanent" value="true" />
</behavior>
<foreign-key foreignTable="user">
<reference local="user_id" foreign="id"/>
</foreign-key>
</table>
<table name="comment">
<column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
<column name="blog_id" type="integer" required="true" />
<column name="user_id" type="integer" required="false" default="-1" />
<column name="author" type="varchar" required="false" default="Anonimous" />
<column name="body" type="longvarchar" required="true" />
<foreign-key foreignTable="user">
<reference local="user_id" foreign="id"/>
</foreign-key>
<foreign-key foreignTable="blog">
<reference local="blog_id" foreign="id"/>
</foreign-key>
<behavior name="timestampable" />
<behavior name="soft_delete" />
</table>我需要通过查询博客表,评论计数“每个”博客条目。
以下是我的控制器查询:
$posts = BlogQuery::create()
->orderByPublishDate('desc')
->filterBy('PublishDate', time(), "<")
->paginate($page, $maxPerPage);我需要在每个记录中添加一个属于该特定记录的注释的计数,它是基于模式中所述的blog_id的。
<foreign-key foreignTable="blog">
<reference local="blog_id" foreign="id"/>
</foreign-key>有人能帮我吗?
发布于 2015-05-29 17:22:44
我从一次评论谈话中得到了一个答复:
一个简单的解决方案就是使用
$posts[0]->countComments(),它将为适当的博客行的相关记录发出单独的计数(*)查询。
->countComments()用Twig做了这个把戏。这将打印每个博客文章的评论:
Comments: {{post.countComments()}}发布于 2016-03-29 15:37:45
您可以使用以下代码
BlogQuery::create('blog')
->leftJoinComment('comment')
->withColumn('COUNT(comment.id)', 'CommentCount')
->groupById()
->paginate($page, $maxPerPage);现在您可以使用$blog->getCommentCount()
https://stackoverflow.com/questions/30493294
复制相似问题