【问题标题】:How to retrieve the previous data record in TYPO3 Extbase?如何在 TYPO3 Extbase 中检索以前的数据记录?
【发布时间】:2013-06-18 15:34:48
【问题描述】:

我有一个向我的控制器提交数据的表单。函数 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() 的方法,还是我必须自己创建它?

【问题讨论】:

    标签: model-view-controller controller typo3 fluid extbase


    【解决方案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();
    }
    

    除非您不强制忽略启用的字段,否则它们将包含在查询中(还有用户组、访问时间等)

    而且...不,afaik 没有开箱即用的这种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多