查询生成器中的多个顺序依据语句



我有一个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();
}

相关内容

  • 没有找到相关文章

最新更新