我需要从我的Doctrine存储库中获得一组预定义的结果。我正在使用var div = angular.element("divID");
div.bind('click', $scope.addPhoto());
方法并传递我的数组:
findBy
问题是,Doctrine会自动按$this->myReposirtory->findBy(['value1', 'value2', 'value3']);
命令返回结果。我需要的是数组输入的确切顺序。
答案 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