yii \ db \ Command无法转换为字符串-插入-Yii2

问题描述 投票:0回答:1

我正在重构包含多个插入查询的某些代码,为此,我正在转换每个看起来像这样的插入方法:

$code = Yii::$app->db->createCommand()
                            ->insert('code', $codeData
                            )->execute();

至此:

$codeQuery = Yii::$app->db->createCommand()
                            ->insert('code', $codeData);

return $codeQuery;

并且在另一个执行事务的方法中:

 $transaction = Yii::$app->db->beginTransaction();
            try{
                Yii::$app->db->createCommand($codeQuery)->execute();
                $transaction->commit();
            } catch (\Exception $e) {
                $transaction->rollBack();
                throw $e;
            } catch (\Throwable $e) {
                $transaction->rollBack();
                throw $e;
            }

但是我得到了错误:

类yii \ db \ Command的对象无法转换为字符串

这篇文章:post并没有真正帮助我。

我怀疑正确的选择是将每个插入命令重写为事务处理方法可以执行的操作,还是将我当前的插入命令输出直接转换为可行的操作。

yii2 transactions insert
1个回答
0
投票

如果已经分配了$codeQuery = Yii::$app->db->createCommand()->insert('code', $codeData),则不需要将$ codeQuery传递到另一个createCommand方法中。此方法可以读取sql的字符串作为变量。

© www.soinside.com 2019 - 2024. All rights reserved.