我有一个Symfony 3项目。 我正在向查询构建器发送一个不同长度的数组。 查询生成器如下所示:
function findByQuery($sortBy) {
return $this->createQueryBuilder('d')
->leftJoin('d.cat', 'dc')
->leftJoin('d.dog', 'dd')
->leftJoin('d.rabbit', 'rr')
->getQuery()
->execute();
}
我想使用 $sortBy 参数对结果进行排序。 然而,问题是有时$sortBy(这是一个数组(有时只包含一个带有键和按设置排序的元素(例如 ASC 或 DESC(,而其他时候将包含多个键。 无论哪种情况,我都希望能够按所有元素对结果进行排序。 有没有简单的方法可以做到这一点?
非常感谢,
这很简单:
$sortBy = [
'd.property1' => 'ASC',
'd.property2' => 'DESC'
];
function findByQuery(array $sortBy) {
// create QueryBuilder
$qb = $this->createQueryBuilder('d')
->leftJoin('d.cat', 'dc')
->leftJoin('d.dog', 'dd')
->leftJoin('d.rabbit', 'rr');
foreach ($sortBy as $property => $dir) {
$qb->addOrderBy($property, $dir);
}
return $qb->getQuery()
->execute();
}