【问题标题】:Yii mysql transaction: data saving only in one tableYii mysql事务:数据只保存在一张表中
【发布时间】:2013-12-02 08:31:42
【问题描述】:

我对 Yii 很陌生。我正在尝试这样的事情--

  public function actionCreate()

{
    $a=new Tblcompany;
            $b= new Tblusergroup;

  $transaction= Yii::app()->db->beginTransaction();

try{
    if(isset($_POST['Tblcompany']))
    {

                    $a->attributes=$_POST['Tblcompany'];

        if($a->save()){

         $b->company_code= $a->company_code;

                  $b->usergroup_code='Admin';

                  $b->save();

                      $transaction->commit();


            $this->redirect(array('view','id'=>$a->company_code));

            }
    }

    $this->render('create',array(
    'a'=>$a,
            'b'=>$b,
    ));

 }catch(Exception $error){

  $transaction->rollback();
    }

}

不知道为什么没有数据保存在 tblusergroup 中。尽管数据已完美添加到 tblcompany.. 请帮助:/

【问题讨论】:

  • 看来代码没问题,把$b->save()放到try_catch语句中看看就OK了。
  • 只有在 $b->save() 返回 true 并且事务提交时才应该重定向。
  • hmm...yah.i 只是在想为什么没有数据进入 b。没有深入了解其他东西。TY neway。

标签: php yii transactions mysql-workbench


【解决方案1】:

可能您的 $b 模型未通过验证。

var_dump($b->getErrors());
die();

$b->save(); 之后查看错误。为了将模型保存到数据库,它必须是空数组。

【讨论】:

  • 带有此消息,表明它是空的.. array (size=0) empty
  • 不知道发生了什么,但在那之后;我删除了那部分 (var_dump($b->getErrors());die();) 并运行了代码,它突然运行良好。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多