snipt

Ctrl+h for KB shortcuts

PHP

Yii Transaction

$model = new Users;
if (isset($_POST['Users'])) {
    $transaction=Yii::app()->db->beginTransaction();
    try {
        $model->attributes = $_POST['Users'];
        if ($model->save()) {
            $modelEmail = new Emails;
            $modelEmail->attributes = $_POST['Emails'];
            $modelEmail->iduser = $model->id;
            if ($modelEmail->save()) {
                $transaction->commit();
                $this->redirect(array('view', 'id' => $model->id));
            }
        }
        //something went wrong...
        $transaction->rollBack();
    }
    catch(Exception $e) { // an exception is raised if a query fails
        //something was really wrong - exception!
        $transaction->rollBack();
 
        //you should do sth with this exception (at least log it or show on page)
        Yii::log( 'Exception when saving data: ' . $e->getMessage(), CLogger::LEVEL_ERROR );
    }
}
https://snipt.net/embed/d2e934e462f9c5287c1f8f03063e6266/
/raw/d2e934e462f9c5287c1f8f03063e6266/
d2e934e462f9c5287c1f8f03063e6266
php
PHP
25
2019-06-25T06:30:07
True
False
False
Oct 27, 2012 at 08:25 PM
/api/public/snipt/49173/
yii-transaction
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10">10</a> <a href="#L-11">11</a> <a href="#L-12">12</a> <a href="#L-13">13</a> <a href="#L-14">14</a> <a href="#L-15">15</a> <a href="#L-16">16</a> <a href="#L-17">17</a> <a href="#L-18">18</a> <a href="#L-19">19</a> <a href="#L-20">20</a> <a href="#L-21">21</a> <a href="#L-22">22</a> <a href="#L-23">23</a> <a href="#L-24">24</a> <a href="#L-25">25</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="x">$model = new Users;</span> </span><span id="L-2"><a name="L-2"></a><span class="x">if (isset($_POST[&#39;Users&#39;])) {</span> </span><span id="L-3"><a name="L-3"></a><span class="x"> $transaction=Yii::app()-&gt;db-&gt;beginTransaction();</span> </span><span id="L-4"><a name="L-4"></a><span class="x"> try {</span> </span><span id="L-5"><a name="L-5"></a><span class="x"> $model-&gt;attributes = $_POST[&#39;Users&#39;];</span> </span><span id="L-6"><a name="L-6"></a><span class="x"> if ($model-&gt;save()) {</span> </span><span id="L-7"><a name="L-7"></a><span class="x"> $modelEmail = new Emails;</span> </span><span id="L-8"><a name="L-8"></a><span class="x"> $modelEmail-&gt;attributes = $_POST[&#39;Emails&#39;];</span> </span><span id="L-9"><a name="L-9"></a><span class="x"> $modelEmail-&gt;iduser = $model-&gt;id;</span> </span><span id="L-10"><a name="L-10"></a><span class="x"> if ($modelEmail-&gt;save()) {</span> </span><span id="L-11"><a name="L-11"></a><span class="x"> $transaction-&gt;commit();</span> </span><span id="L-12"><a name="L-12"></a><span class="x"> $this-&gt;redirect(array(&#39;view&#39;, &#39;id&#39; =&gt; $model-&gt;id));</span> </span><span id="L-13"><a name="L-13"></a><span class="x"> }</span> </span><span id="L-14"><a name="L-14"></a><span class="x"> }</span> </span><span id="L-15"><a name="L-15"></a><span class="x"> //something went wrong...</span> </span><span id="L-16"><a name="L-16"></a><span class="x"> $transaction-&gt;rollBack();</span> </span><span id="L-17"><a name="L-17"></a><span class="x"> }</span> </span><span id="L-18"><a name="L-18"></a><span class="x"> catch(Exception $e) { // an exception is raised if a query fails</span> </span><span id="L-19"><a name="L-19"></a><span class="x"> //something was really wrong - exception!</span> </span><span id="L-20"><a name="L-20"></a><span class="x"> $transaction-&gt;rollBack();</span> </span><span id="L-21"><a name="L-21"></a><span class="x"> </span> </span><span id="L-22"><a name="L-22"></a><span class="x"> //you should do sth with this exception (at least log it or show on page)</span> </span><span id="L-23"><a name="L-23"></a><span class="x"> Yii::log( &#39;Exception when saving data: &#39; . $e-&gt;getMessage(), CLogger::LEVEL_ERROR );</span> </span><span id="L-24"><a name="L-24"></a><span class="x"> }</span> </span><span id="L-25"><a name="L-25"></a><span class="x">}</span> </span></pre></div> </td></tr></table>