我有一个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)的顺序,而其他时候将包含几个键。无论哪种情况,我都希望能够按所有元素对结果进行排序。有一种简单的方法吗?
非常感谢,
答案 0 :(得分:1)
这很简单:
$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();
}