Я написал так
/**
* itemRepository
*
* @var \KRT\KrtEmployee\Domain\Repository\ItemRepository
* @inject
*/
protected $itemRepository = null;
/**
* action list
*
* @return void
*/
public function listAction()
{
$arguments =$this->request->getArguments();
$employees = $this->itemRepository->findAll();
$this->view->assign('employees',$employees);
}
В моем $ сотрудников результат у меня есть
Теперь, как я могу отсортировать массив результатов в по возрастанию заказ на основе
Есть ли какая-либо функция по умолчанию для сортировки внутри запросов к хранилищу?
Каждый репозиторий имеет $defaultOrderings
свойство, в котором можно указать порядок по умолчанию, применяемый ко всем методам запросов. В вашем случае это может выглядеть так:
protected $defaultOrderings = [
'name' => QueryInterface::ORDER_ASCENDING,
'department.name' => QueryInterface::ORDER_ASCENDING,
'salary' => QueryInterface::ORDER_ASCENDING,
];
Как вы можете видеть с department.name
Вы также можете отсортировать по свойствам отношений. Обратите внимание, что это работает только для отношений 1: 1 и n: 1.
В случае пользовательских методов запроса в вашем хранилище вы можете вручную установить порядок непосредственно в запросе:
$query->setOrderings([
'name' => QueryInterface::ORDER_ASCENDING,
'department.name' => QueryInterface::ORDER_ASCENDING,
'salary' => QueryInterface::ORDER_ASCENDING,
]);
У вас есть несколько вариантов в зависимости от того, что вы хотели бы достичь:
Установка порядка по умолчанию для всего хранилища
Добавьте следующее в свой класс репозитория
protected $defaultOrderings =
array(
'department' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,
'salary' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
);
Это будет применяться ко всем запросам, сделанным в этом хранилище.
увидеть: https://wiki.typo3.org/Default_Orderings_and_Query_Settings_in_Repository
Установка заказа для одного запроса
Добавьте это к запросу, который вы определили в своем хранилище
$query->setOrderings(
array(
'department' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,
'salary' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
)
);
Таким образом, вы могли бы (и должны были) реализовать разные методы доступа для каждого порядка сортировки, который вы хотели бы вернуть.
Сортировать результат
Вы всегда можете использовать методы сортировки PHP, чтобы отсортировать результат запроса (возможно, преобразовав его в массив с ->toArray()
первый.