gpt4 book ai didi

php - symfony2 学说计数加入实体的数量

转载 作者:行者123 更新时间:2023-11-29 00:10:16 24 4
gpt4 key购买 nike

我有具有多对一关系的文章和类别实体。我想列出其中包含文章数量的类别。如何使用 Doctrine2 有效地查询它?

最佳答案

如果你已经正确设置了你的类别实体,那么你可以通过调用它的getter计数来获取它的文章集合,假设你有如下映射的实体

文章

class Article
{
// ...

/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="articles")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
protected $category;
// ... title ,id ,bla bla bla
}

类别

use Doctrine\Common\Collections\ArrayCollection;

class Category
{
// ...

/**
* @ORM\OneToMany(targetEntity="Article", mappedBy="category")
*/
protected $articles;
// ... title ,id ,bla bla bla
public function __construct()
{
$this->articles= new ArrayCollection();
}
}

然后你可以在 Controller 中循环你的类别实体

$DM = $this->getContainer()->getDoctrine()->getManager();
$categories = $DM->getRepository('Namespace\YourBundle\Entity\Category')->findAll();
foreach($categories as $c){
echo $this->getTitle();
echo count($this->getArticles());
}

在 Twig 上

{% for c in categories %}
{{ c.getTitle() }}
{{ c.getArticles()|length }}
{% endfor %}

通过查询构建器,您可以这样做

$DM = $this->getContainer()->getDoctrine()->getManager();

$query = $DM->createQueryBuilder()
->select('c.id,c.title, COUNT(a.id) as article_count')
->from('NamespaceYourBunle:Category', 'c')
->innerJoin('c.articles', 'a')
->groupBy('c.id')
;
$categories= $query->getQuery()->getResult();

关于php - symfony2 学说计数加入实体的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25511122/

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