第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 cakephp 中使用事務(wù)?

如何在 cakephp 中使用事務(wù)?

PHP
慕哥6287543 2021-08-28 10:28:56
我正在嘗試將提交與 setConnection() 一起使用,但它不起作用......我不知道如何在 cakephp 中使事務(wù)工作我在文檔中發(fā)現(xiàn):https : //book.cakephp.org/3.0/en/orm/database-basics.html#using-transactions但我無法實現(xiàn)......問題是我想保證兩個實體的保存:$this->Users->save($user) and $clientTable->save($client)這是我的代碼:public function register()    {        $locator = TableRegistry::getTableLocator();        $clientTable = $locator->get("Clients");        $user = $this->Users->newEntity();        $client = $clientTable->newEntity();        if ($this->request->is('post')) {            $request = $this->request->getData();            $user = $this->Users->patchEntity($user, $request);            $result = false;            // begin()            if ($this->Users->save($user)) {                $request['user_id'] = $user->id;                $client = $clientTable->patchEntity($client, $request);                if ($clientTable->save($client)) {                    $result = true;                }            }            if ($result) {                // commit()                $this->Flash->success(__('The user has been registered.'));                return $this->redirect([                    'action' => 'login'                ]);            } else {                // rollback()            }        $this->Flash->error(__('The user could not be registered. Please, try again.'));        }        $this->set(compact('$user'));    }
查看完整描述

2 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗 獲得超6個贊

您可以嘗試以下代碼:


try {

    $this->Users->getConnection()->begin();

    $this->Users->saveOrFail($userEntity, ['atomic' => false]);

    $this->Users->getConnection()->commit();


} catch(\Cake\ORM\Exception\PersistenceFailedException $e) {

    $this->Users->getConnection()->rollback();

}


查看完整回答
反對 回復(fù) 2021-08-28
?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗 獲得超9個贊

我想我能夠用“交易”來進(jìn)行交易。


在我的測試中,如果 Clients 實體中存在錯誤,則不會保存 Users 實體。


我不知道這是否是最好的方法,但它有效


public function register()

    {

        $locator = TableRegistry::getTableLocator();

        $userTable = $locator->get("Users");

        $clientTable = $locator->get("Clients");


        $user = $userTable->newEntity();

        $client = $clientTable->newEntity();

        if ($this->request->is('post')) {

            $request = $this->request->getData();


            $user = $userTable->patchEntity($user, $request);


            $conn = ConnectionManager::get('default');


            try {

                $conn->transactional(function ($conn) use ($userTable, $clientTable, $user, $client, $request) {


                    $userTable->saveOrFail($user, [

                        'atomic' => false

                    ]);

                    $request['user_id'] = $user->id;

                    $client = $clientTable->patchEntity($client, $request);


                    $clientTable->saveOrFail($client, [

                        'atomic' => false

                    ]);

                });

                $this->Flash->success(__('The user has been registered.'));


                return $this->redirect([

                    'action' => 'login'

                ]);

            } catch (\Cake\ORM\Exception\PersistenceFailedException $e) {

                $this->Flash->error(__('Error on save: {0}', $e->getMessage()));


                return $this->redirect([

                    'action' => 'register'

                ]);

            }


            $this->Flash->error(__('The user could not be registered. Please, try again.'));

        }

        $this->set(compact('$user'));

    }


查看完整回答
反對 回復(fù) 2021-08-28
  • 2 回答
  • 0 關(guān)注
  • 201 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號