我需要在Yii中插入多个ActiveRecord对象,如果把它们全部插入
$transaction = Yii::app()->db->beginTransaction();
for ($i = 0;$i < 10;$i++){
$model = new Mymodel();
$model->x = $i;
if (!$model->save()){
$transaction->rollback();
break;
}
}
if ($transaction->active)
$transaction->commit();
现在我需要在一个查询中插入所有这些记录,在使用活动记录期间如何进行?
4条答案
按热度按时间inkz8wg91#
此类的新版本
用法为:
ars1skjm2#
虽然不完全像Yii,但它可以作为一个扩展/组件,被当作一个普通的命令来处理,所以事务仍然适用。它完全可以设置为在查询中使用参数而不是字符串文字,并且还可以实现对空值和默认值的检查。
用法为:
当然,它可以做得更详细和扩展,以允许更新等
希望这对你有帮助。
jjjwad0x3#
Yii 1.1.14提供了
CDbCommandBuilder::createMultipleInsertCommand()
方法,如果你需要在一个查询中插入多条记录,你应该使用它,因为这个问题中的所有其他答案都容易受到SQL injection的攻击,所以如果你自己尝试实现类似的东西,很容易把事情搞砸。对于模型数组,您可能会以这种方式生成
$data
(请注意,它不会进行任何验证):jaql4c8m4#
YII批量说明书/批次说明书的更新
}
我遇到的问题与3件事与早期的代码。
1.在早期代码中设置为0的位置自动递增列
1.包含双引号的查询语句。
1.执行函数应类似于带参数父执行函数
我猜前2点是与我正在使用的postgresql数据库有关的,希望更新后的代码适用于所有数据库系统。