我有两个实体 - 横幅和类别。它们之间有M:N的关系。
我想获得指定类别的横幅广告。但我需要从类别中获取一些数据(我需要关卡,因为我会根据类别级别对Banners进行排序)。
我正在使用查询构建器:
$queryBuilder->from('App\Model\Entities\Banner','b')
->select('b', 'cat')
->join('b.categories', 'cat')
->where('cat.id IN (:categories)')
->orderBy('cat.level', 'DESC')
->setParameter('categories', $categoryIds);
我使用的水化方法都没有,我总是只得到一个实体 - 横幅。我认为这是因为Banner与类别有关系,所以Doctrine不是保湿实体类别。
更新:如果我使用SCALAR
水合模式,我将从两个实体获取数据。但与之合作是痛苦的:(
我尝试添加select NEW
运算符并创建新对象,但在这种情况下我没有得到Banner,我只获得了新对象BannerDTO。
$queryBuilder->addSelect('NEW App\Model\BannerDTO(cat.level, b.id)')
我还尝试过使用PARTIAL
查询进行一些实验等等,但它也没有成功:(
是否有可能获得实体及其相关实体?我期待其中包含2个实体的数组 - 横幅和类别。无论如何,Doctrine正在从一个SQL查询中获取数据库中的所有必要数据。