Make Doctrine返回预定义的数组条件顺序的结果

时间:2016-11-23 08:00:50

标签: php doctrine symfony

我需要从我的Doctrine存储库中获得一组预定义的结果。我正在使用var div = angular.element("divID"); div.bind('click', $scope.addPhoto()); 方法并传递我的数组:

findBy

问题是,Doctrine会自动按$this->myReposirtory->findBy(['value1', 'value2', 'value3']); 命令返回结果。我需要的是数组输入的确切顺序。

2 个答案:

答案 0 :(得分:1)

您无法从数据库中提取自定义订单。例如,如果您的参数是[5,4,6],您将得到[4,5,6]或[6,5,4],具体取决于您对它们的排序方式。这是mysql的默认行为。

如果您想获得这三个值,您可以单独查询或添加一个可排序的值,以便按照您想要的顺序获取它们。或者也许您可以在代码中的水合物处理后订购它们。

答案 1 :(得分:0)

这就是findBy方法的样子:

/**
 * Finds entities by a set of criteria.
 *
 * @param array      $criteria
 * @param array|null $orderBy
 * @param int|null   $limit
 * @param int|null   $offset
 *
 * @return array The objects.
 */
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
{
    $persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName);

    return $persister->loadAll($criteria, $orderBy, $limit, $offset);
}

所以,第二个参数是ORDER BY。

示例查询可以是:

$this->myReposirtory->findBy([...], ['someValue' => 'ASC']);

或者,如果您需要更多自定义,可以在存储库中编写自定义方法。 更多信息:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html#working-with-querybuilder