本文整理汇总了PHP中Transaction::begin方法的典型用法代码示例。如果您正苦于以下问题:PHP Transaction::begin方法的具体用法?PHP Transaction::begin怎么用?PHP Transaction::begin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Transaction
的用法示例。
在下文中一共展示了Transaction::begin方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: registerNewUser
/**
* @param User $user
* @param Invitation $invitation
* @return void
* @throws Runtime\DuplicateUsernameException
* @throws Runtime\DuplicateEmailException
* @throws Runtime\InvitationNotFoundException
* @throws Runtime\InvitationExpiredException
* @throws Runtime\InvitationTokenMatchException
* @throws \DibiException
*/
public function registerNewUser(User $user, Invitation $invitation)
{
if (!$user->isDetached()) {
throw new InvalidArgumentException('Only detached instances of Entity ' . User::class . ' can pass.');
}
$this->checkInvitation($user->email, $invitation->token);
try {
$this->transaction->begin();
$this->userRepository->persist($user);
$this->removeInvitation($invitation);
$this->transaction->commit();
} catch (\DibiException $e) {
if ($e->getCode() == 1062) {
try {
$this->userRepository->checkUsername($user->username);
} catch (Runtime\UserAlreadyExistsException $usernameException) {
$this->transaction->rollback();
throw new Runtime\DuplicateUsernameException();
}
try {
$this->userRepository->checkEmail($user->email);
} catch (Runtime\UserAlreadyExistsException $emailException) {
$this->transaction->rollback();
throw new Runtime\DuplicateEmailException();
}
}
$this->transaction->rollback();
Debugger::log($e, Debugger::ERROR);
throw $e;
}
}
示例2: saveListingItem
/**
* @param ListingItem $listingItem
* @return ListingItem
* @throws ListingItemDayAlreadyExistsException
* @throws \DibiException
*/
public function saveListingItem(ListingItem $listingItem)
{
try {
$this->transaction->begin();
$this->listingItemRepository->persist($listingItem);
$this->localityRepository->saveLocalityToUserList($listingItem->locality, $listingItem->listing->getRowData()['userID']);
$this->transaction->commit();
return $listingItem;
} catch (\DibiException $e) {
$this->transaction->rollback();
if ($e->getCode() == 1062) {
throw new ListingItemDayAlreadyExistsException();
}
Debugger::log($e, Debugger::ERROR);
throw $e;
}
}
示例3: begin
public static function begin($userId)
{
$trans = parent::begin();
$dao = new BaseDao("CertifierTransactionAtom");
$tr = $dao->getPattern();
$tr->userFid = $userId;
//var_dump($trans->getId());
$tr->transFid = $trans->getId();
//var_dump($tr);
$tr->insert();
return $trans;
}
示例4: sendMessages
/**
* @param array $messages Key => recipientID, Value = Message entity or array of messages
* @throws InvalidArgumentException
* @throws \DibiException
* @return array
*/
public function sendMessages(array $messages)
{
$ex = new InvalidArgumentException('Only non-persisted instances of ' . Message::class . ' can pas.');
$msgs = [];
foreach ($messages as $recipientID => $recipientMessages) {
Validators::assert($recipientID, 'numericint');
if (is_array($recipientMessages)) {
foreach ($recipientMessages as $message) {
if (!($message instanceof Message and $message->isDetached())) {
throw $ex;
}
$msgs[] = $message;
}
} else {
// recipientMessages contains only one message
if (!($recipientMessages instanceof Message and $recipientMessages->isDetached())) {
throw $ex;
}
$msgs[] = $recipientMessages;
}
}
try {
$this->transaction->begin();
$this->messageRepository->saveMessages($msgs);
unset($msgs);
$usersMessages = [];
foreach ($messages as $recipientID => $recipientMessages) {
if (is_array($recipientMessages)) {
foreach ($recipientMessages as $message) {
$recipientMessage = new UserMessage($message, $recipientID);
$usersMessages[] = $recipientMessage;
}
} else {
$recipientMessage = new UserMessage($recipientMessages, $recipientID);
$usersMessages[] = $recipientMessage;
}
}
$this->userMessageRepository->sendMessagesToRecipients($usersMessages);
$this->transaction->commit();
return $usersMessages;
} catch (\DibiException $e) {
$this->transaction->rollback();
Debugger::log($e, Debugger::ERROR);
throw $e;
}
}
示例5: action_update
public function action_update(Params $param)
{
$this->content->bind('form', $torn);
$project = Jelly::select('project')->link($param->id)->load();
if (!$project->loaded()) {
throw new Error404_Exception();
}
$torn = new Torn($project);
if ($torn->check()) {
try {
Transaction::begin();
$project->set($_FILES + $_POST);
$project->save();
Transaction::commit();
$this->request->redirect(Route::get('protected')->uri(array('controller' => 'project')));
} catch (Validate_Exception $e) {
Transaction::rollback();
$torn->catch_errors($e);
}
}
}
示例6: mergeListings
/**
* @param Listing $baseListing
* @param Listing $listingToMerge
* @param array $selectedCollisionItems
* @param \App\Model\Entities\User|int|null $user
* @return Listing
* @throws NoCollisionListingItemSelectedException
* @throws \DibiException
*/
public function mergeListings(Listing $baseListing, Listing $listingToMerge, array $selectedCollisionItems = [], $user = null)
{
$this->checkListingValidity($baseListing);
$this->checkListingValidity($listingToMerge);
if (!$this->haveListingsSamePeriod($baseListing, $listingToMerge)) {
throw new InvalidArgumentException('Given Listings must have same Period(Year and Month).');
}
$userID = $this->getIdOfSignedInUserOnNull($user);
$items = $this->itemService->getMergedListOfItems($baseListing, $listingToMerge, $selectedCollisionItems);
try {
$this->transaction->begin();
$newListing = new Listing($baseListing->year, $baseListing->month, $userID);
$this->saveListing($newListing);
$this->itemService->setListingForGivenItems($items, $newListing);
$this->listingItemRepository->saveListingItems($items);
$this->transaction->commit();
return $newListing;
} catch (\DibiException $e) {
$this->transaction->rollback();
Debugger::log($e, Debugger::ERROR);
throw $e;
}
}
示例7: begin
public static function begin()
{
$retval = new EditorTransaction();
$retval->transObject = Transaction::begin();
return $retval;
}