我是 doctrine 的新手 . 我需要得到几个表的数组结果,我无法得到正确的结果 .

表1:建筑物

+-----------+--------------+------+-----+---------+----------------+
    | Field     | Type         | Null | Key | Default | Extra          |
    +-----------+--------------+------+-----+---------+----------------+
    | id        | int(11)      | NO   | PRI | NULL    | auto_increment |
    | logo      | varchar(255) | YES  |     | NULL    |                |
    | image     | varchar(255) | YES  |     | NULL    |                |
    | slug      | varchar(255) | YES  |     | NULL    |                |
    | star      | int(11)      | YES  |     | NULL    |                |
    | map       | longtext     | YES  |     | NULL    |                |
    | is_active | tinyint(1)   | NO   |     | NULL    |                |
    +-----------+--------------+------+-----+---------+----------------+

表2:BuildingTranslation

+-------------+--------------+------+-----+---------+----------------+
    | Field       | Type         | Null | Key | Default | Extra          |
    +-------------+--------------+------+-----+---------+----------------+
    | id          | int(11)      | NO   | PRI | NULL    | auto_increment |
    | building_id | int(11)      | YES  | MUL | NULL    |                |
    | language    | varchar(5)   | YES  |     | NULL    |                |
    | name        | varchar(255) | NO   |     | NULL    |                |
    | label       | varchar(255) | YES  |     | NULL    |                |
    | content     | longtext     | YES  |     | NULL    |                |
    | address     | longtext     | NO   |     | NULL    |                |
    +-------------+--------------+------+-----+---------+----------------+

表3:配置

+-------------+--------------+------+-----+---------+----------------+
    | Field       | Type         | Null | Key | Default | Extra          |
    +-------------+--------------+------+-----+---------+----------------+
    | id          | int(11)      | NO   | PRI | NULL    | auto_increment |
    | building_id | int(11)      | YES  | MUL | NULL    |                |
    | type        | varchar(255) | YES  |     | NULL    |                |
    | language    | varchar(5)   | YES  |     | NULL    |                |
    | name        | varchar(255) | NO   |     | NULL    |                |
    | parameter   | varchar(255) | NO   |     | NULL    |                |
    +-------------+--------------+------+-----+---------+----------------+

表格更多:类别,内容,联系方式,标签等...

这是我试过的查询结果 .

array:1 [▼
          0 => array:9 [▼
            "id" => 1
            "logo" => "logo.png"
            "image" => "background.png"
            "slug" => "hotel"
            "star" => 3
            "map" => "NULL"
            "isActive" => true
            "translations" => array:1 [▼
              0 => array:7 [▼
                "id" => 2
                "buildingId" => 1
                "language" => "en"
                "name" => "Building name"
                "label" => "Since 2001"
                "content" => "Content text"
                "address" => "Building address"
              ]
            ]
            "configs" => array:1 [▼
              0 => array:5 [▼
                "id" => 1
                "type" => "social"
                "language" => "en"
                "name" => "facebook"
                "parameter" => "https://www.facebook.com/"
              ]
            ]
          ]
        ]

我需要的是Building和BuildingTranslation实体合并为一行,其他实体是分开的 . 当我尝试选择这样的列:

$qb = $em->createQueryBuilder()
                    ->select('b.slug, b.star', 't.name', 'configs')
                    ->from('HotelBundle:Building', 'b')
                    ->join('b.translations', 't', 'WITH', 'b.id = t.building AND t.language = :language')
                    ->leftJoin('b.configs', 'configs')
                    ->where('b.slug = :building')
                    ->groupBy('t.name')
                    ->setParameter('building', $building)
                    ->setParameter('language', $locale)
                    ->getQuery()
                    ->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);

我收到这个错误 . 错误:如果不选择至少一个根实体别名,则无法通过标识变量选择实体 . “) .