繁体   English   中英

Symfony2 Doctrine2多对多将所有实体及其关系实体

[英]Symfony2 Doctrine2 Many To Many get all entities with their relation entities

如何使用一个SELECT来选择一个表中的所有实体以及另一个表中的实体来进入控制器?

例如,如果我有一个表:应用程序和类别(很多实现),而我想使用一个SELECT来获取其类别的所有应用。 怎么做 ? 内部联接 ?

然后我想建立一个像这样的数组:

application=>categories

[
  [AppName] => [Category1, Category2, Category3],
  [AppName] => [Category1, Category2]
]

我试图做这样的事情:

$qb = $em->createQueryBuilder()
            ->select("name, categories")
            ->from('ComzettaApplicationsBundle:Application', 'name')
            ->innerJoin('ComzettaApplicationsBundle:Application', 'categories');
$applicationsEntity = $qb->getQuery()->getResult();

但我不知道

我想到了:

该查询有效:

    $fields = array('a.Name', 'c.name');
    $query = $em->createQueryBuilder();
    $query
        ->select($fields)
        ->from('ComzettaApplicationsBundle:Application', 'a')
        ->innerJoin('a.categories', 'c');
    $results = $query->getQuery()->getResult();

结果示例:

array (size=3)
  0 => 
    array (size=3)
      'Name' => string 'Google Earth DirectX' (length=20)
      'category' => string 'Nowa1' (length=8)
  1 => 
    array (size=3)
      'Name' => string 'Acrobat Reader 10' (length=17)
      'category' => string 'nowa2' (length=8)
  2 => 
    array (size=3)
      'Name' => string 'Acrobat Reader 10' (length=17)
      'category' => string 'nowa3' (length=8)

您只需调用实体的存储库即可获取其相关对象,而无需进行连接:

  $this->get('doctrine.orm.entity_manager')->getRepository('ComzettaApplicationsBundle:Application')->findAll();

您可以执行以下操作:

$qb = $em->createQueryBuilder()
            ->select("application", "category")
            ->from('ComzettaApplicationsBundle:Application', 'application')
            ->join('application.categories', 'category');
$applicationsEntity = $qb->getQuery()->getResult();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM