如何在 TYPO3 中编写用于更新的 extbase 存储库方法?
How to write an extbase Repository-Method for Update in TYPO3?
我在TYPO3中写了一个更新查询,现在我需要将其更改为查询对象存储库方法。如何更改下面的代码?
public function updatePaymentDetails($uid, $txnID, $amt, $stats)
{
$itemUID = $uid;
$transID = $txnID;
$amountPaid = $amt;
$txStatus = $stats;
$tableName = 'tx_paypalpayment_domain_model_transactions AS tpp';
$whereCondition = 'tpp.uid=' . '"' . $itemUID . '"';
$setValues = ['transactionid' => $transID, 'amount' => $amountPaid, 'txnstatus' => $txStatus];
$result = $GLOBALS['TYPO3_DB']->exec_UPDATEquery($tableName, $whereCondition, $setValues);
return $result;
}
我按照自己的想法做了这么多(不知道对不对),剩下的应该是多少?
public function paymentUpdate($uid, $txnID, $amt, $stats) {
$query = $this->createQuery();
$query->matching(
$query->logicalAnd(
$query->equals("transactionid", $txnID),
$query->equals("amount", $amt),
$query->equals("txnstatus", $stats)
)
);
/*--- Update Code ---*/
return $query->execute();
}
有什么办法吗?
TYPO3/Extbase 方法是首先从持久层获取您的事务,然后将您的更改应用到域对象,然后在您的存储库中更新它。
在您的控制器操作中如下所示:
$transaction = $this->transactionRepository->findByIdentifier($itemUid);
$transaction->setTransactionId($transID);
$transaction->setAmount($amountPaid);
$transaction->setStatus($txStatus);
$this->transactionRepository->update($transaction);
如果您想直接更新而不是先获取记录,请查看 \TYPO3\CMS\Core\Database\Query\QueryBuilder
(仅存在于较新版本的 TYPO3 - 8.7 及更高版本中)。在旧版本的 TYPO3 中,您可以查看 $GLOBALS['TYPO3_DB']->exec_*
.
我在TYPO3中写了一个更新查询,现在我需要将其更改为查询对象存储库方法。如何更改下面的代码?
public function updatePaymentDetails($uid, $txnID, $amt, $stats)
{
$itemUID = $uid;
$transID = $txnID;
$amountPaid = $amt;
$txStatus = $stats;
$tableName = 'tx_paypalpayment_domain_model_transactions AS tpp';
$whereCondition = 'tpp.uid=' . '"' . $itemUID . '"';
$setValues = ['transactionid' => $transID, 'amount' => $amountPaid, 'txnstatus' => $txStatus];
$result = $GLOBALS['TYPO3_DB']->exec_UPDATEquery($tableName, $whereCondition, $setValues);
return $result;
}
我按照自己的想法做了这么多(不知道对不对),剩下的应该是多少?
public function paymentUpdate($uid, $txnID, $amt, $stats) {
$query = $this->createQuery();
$query->matching(
$query->logicalAnd(
$query->equals("transactionid", $txnID),
$query->equals("amount", $amt),
$query->equals("txnstatus", $stats)
)
);
/*--- Update Code ---*/
return $query->execute();
}
有什么办法吗?
TYPO3/Extbase 方法是首先从持久层获取您的事务,然后将您的更改应用到域对象,然后在您的存储库中更新它。
在您的控制器操作中如下所示:
$transaction = $this->transactionRepository->findByIdentifier($itemUid);
$transaction->setTransactionId($transID);
$transaction->setAmount($amountPaid);
$transaction->setStatus($txStatus);
$this->transactionRepository->update($transaction);
如果您想直接更新而不是先获取记录,请查看 \TYPO3\CMS\Core\Database\Query\QueryBuilder
(仅存在于较新版本的 TYPO3 - 8.7 及更高版本中)。在旧版本的 TYPO3 中,您可以查看 $GLOBALS['TYPO3_DB']->exec_*
.