带有关系和计数的学说查询

时间:2015-06-21 11:42:52

标签: php symfony doctrine-orm doctrine

我正在尝试在Doctrine中进行复杂的查询但到目前为止没有运气。

我有一个名为Category的实体。

类别有报告(1对多) 类别有子类别(1到多个自引用)

class Category extends
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 * @Expose
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255)
 * @Expose
 */
private $name;

/**
 * @ORM\OneToMany(targetEntity=".....\Category", mappedBy="parentCategory", cascade={"persist"})
 *
 * @MaxDepth(1)
 *
 * @Expose
 *
 **/
private $subcategories;

/**
 * @ORM\ManyToOne(targetEntity="....\Category", inversedBy="subcategories", cascade={"persist"})
 * @ORM\JoinColumn(name="idparent", referencedColumnName="id", nullable=true)
 *
 * @Expose
 */
private $parentCategory;

/**
 * @ORM\OneToMany(targetEntity="....\Report", mappedBy="category")
 */
private $reports;

我在使用FosRestBundle和HATEOASBundle在symfony中设置的rest API中使用这些实体。

所以我的目标是返回以下内容:

所有父类别(idparent = null的类别,意味着它们都是根),其子类别的total_count报告和total_sum_reports,子类别包含total_count报告和total_sum_reports。

类似的东西:

name: parentCategory1
total_reports: 20
total_amount 100
subcategories: [
    [name: child 1, total_reports: 15, total_amount 80],
    [name: child 2, total_reports: 5, total_amount 20],
]

不幸的是,没有想到这一点。 如何将所有需要的信息转换为单个json对象? Doctrine是否有可能将所有这些都变成一个大对象或者需要手动创建它?

0 个答案:

没有答案