Как получить предыдущую запись данных в TYPO3 Extbase?

У меня есть форма, которая отправляет данные моему контроллеру. Функция createAction() позаботится о добавлении новой записи в базу данных.

Мне нужно получить определенное значение (specialValue) из предыдущей записи в базе данных, которая не удалена и не скрыта. Однако со следующим я могу получить только uid (не учитывая удаленное/скрытое состояние).

public function createAction(Tx_MyExt_Domain_Model_MyObject $myobject) {
    $this->myObjectRepository->add($myobject);

    $persistenceManager = t3lib_div::makeInstance('Tx_Extbase_Persistence_Manager');        
    $persistenceManager->persistAll();

    $uid = $myobject->getUid();
    $previousMyObject = $this->myObjectRepository->findByUid($uid-1);
    $myobject->setSpecialValue($previousMyObject->getSpecialValue() +1);
}

Есть ли что-то вроде метода findPrevious() для моего репозитория, или мне нужно создать его самому?


person Mateng    schedule 18.06.2013    source источник


Ответы (1)


Получите первый доступный (не скрытый, не удаленный) объект с uid меньше, чем новый ($uid в вашем случае), используя сортировку по убыванию, добавьте это в свой репозиторий:

public function findPreviousAvailable($uid) {
    $query = $this->createQuery()
        ->setOrderings(array('uid'=> Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING));

    $query->matching($query->lessThan('uid', $uid));

    return $query->execute()->getFirst();
}

пока вы не заставите игнорировать включенные поля, они будут включены в запрос (также группы пользователей, время доступа и т. д.)

И... нет, на самом деле такого метода нет в готовом виде.

person biesior    schedule 18.06.2013