1
私は2つの異なる結果を結合するDQLを変更しようとしています:は、2つの異なるDQLを組み合わせ
class ContentRepository extends EntityRepository
{
/**
* @param string $userId
* @return array
*/
public function findOwnerReadByUserId(string $userId): array
{
$qb = $this->createQueryBuilder('c');
$qb->select('c')
->innerJoin('c.reactions', 'rea', Join::WITH, $qb->expr()->eq('rea.content', 'c.id'))
->where('c.userId = :userId')
->orderBy('rea.createdAt', 'DESC')
->setParameters(['userId' => $userId]);
return $qb->getQuery()->getResult();
}
/**
* @param string $userId
* @return array
*/
public function findOtherReadByUserId(string $userId): array
{
$qb = $this->createQueryBuilder('c');
$qb->select('c')
->innerJoin('c.receivers', 'rec', Join::WITH, $qb->expr()->eq('rec.userId', ':userId'))
->innerJoin('c.reactions', 'rea', Join::WITH, $qb->expr()->eq('rea.content', 'c.id'))
->where('rec.read = :read')
->orderBy('rea.createdAt', 'DESC')
->setParameters(['userId' => $userId, 'read' => true]);
return $qb->getQuery()->getResult();
}
}
両方のクエリが魅力のように働いているが、私は理由により、オーダーのarray_mergeを避けたいです。単一のDQLで両方の結果を取得するための提案はありますか?
を持っていますか? –
@AlexBlex実際には公開されていない関数は標準クラスリポジトリにあります – Mauro
@AlexBlexどのようにして1つのクエリでそれを行うのですか? – Mauro