doctrine-orm - 如何设置最大结果查询包含左连接关系?
问题描述
public function getArtistsScreen(array $filters)
{
$qb = $this->getEntityManager()->createQueryBuilder('ap');
$qb->select('ap')->from(ArtistProfile::class, 'ap');
$qb->select("apc18.name , GROUP_CONCAT( ap.id, '|', usr.firstName, '|', usr.lastName,
'|', cat.id, '|', ap.averageRating, '|', ap.weekdayHourlyRate, '|', ap.countTotalComments, '|', usr.avatar, '|', apc18.name SEPARATOR ';' ) as artists")
->join('ap.user', 'usr')
->join('ap.category', 'cat')
->leftJoin(ArtistProfileCategoryI18N::class, 'apc18', Join::WITH, 'cat.id = apc18.artistProfileCategory')
->where($qb->expr()->in('ap.category', ':category'))->setParameter('category', $filters['category'])
->andWhere('ap.status =:status')->setParameter('status','a')
->orderBy('ap.id', 'DESC')
->setFirstResult(0)
->setMaxResults(1);
$data = $qb->getQuery()->getResult();
return $this->screensConcatParser($data);
}
还有 screenConcatParser 方法
public function screensConcatParser($data)
{
/** @var ScreenModel[] $itemsArtist */
$itemsArtist = [];
foreach ($data as $item) {
$artists = explode(';', $item['artists']);
$objectData = [];
foreach ($artists as $artist) {
$handleArtist = explode('|', $artist);
$objectData [] =new ScreenModel($handleArtist[1] . ' ' . $handleArtist[2], (int)$handleArtist[3], (float)$handleArtist[4], $handleArtist[7],
(int)$handleArtist[6], (float) $handleArtist[5], (int)$handleArtist[0],1, null, $handleArtist[8],null,null);
}
$itemsArtist [] = [
'items' => $objectData,
'title' => $objectData[0]->getMotto()
];
}
return $itemsArtist;
}
我也尝试使用 orderBy 函数,但它没有给出任何不同的结果,而不是左连接我尝试了内部连接,但没有发现任何差异
解决方案
推荐阅读
- bash - 在 bash shell 脚本中找到最小的素数
- java - 如何在 Windows 10 上设置 jaudiotagger
- swift - 具有可互换属性的可散列结构?
- excel - VBA 代码循环遍历 .csv 文件的文件夹,将数据粘贴到 xlsx 模板中并另存为 .xlsx
- time - SAS时间信息
- javascript - Onclick 找不到要执行的函数
- php - 在 Laravel 表单验证后插入记录
- python - 如何修复 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?运行 bitbucket 管道时出错
- vba - 如何在 PowerPoint 应用程序中获得字母之间的延迟?
- javascript - 配置vscode任务在parcel watch后复制文件