我正在尝试在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是否有可能将所有这些都变成一个大对象或者需要手动创建它?