jet66 发表于 2011-3-4 11:10:22

想问一个对多模型中的MySQL事务处理办法

控制器调用多个模型,每个模型中都有数据库操作

如何实现?

在控制器用可以db->tran_start()
但要每个模型中,如何调用数据库操作呢?
$CI->db->query("?")

这个?


----------------------------------

如何是多数据库操作,又怎么办呢?:lol

visvoy 发表于 2011-3-4 14:51:25

->trans_start()
->model1->func()
->model2->func()
->model3->func()
if(->trans_commit())echo 'ok';
else echo 'no ok';
多库用规范写法:数据库名.数据表名.字段名 操作

jet66 发表于 2011-3-4 17:31:06

->trans_start()
->model1->func()
->model2->func()
->model3->func()
if(->trans_commit())echo 'ok';
el ...
visvoy 发表于 2011-3-4 14:51 http://codeigniter.org.cn/forums/images/common/back.gif


    我其实想问的是model1->func()这个函数中用到的DB链接还是$this->db 么?

那如果是多数据库操作每一个都得new 一下再用,那最后控制器中的DB还是同一个链接了吗?
每个模型中都得
$DB1 = $this->load->database('db1',TRUE);

最后在控制器中
还得
$DB1 = $this->load->database('db1',TRUE);

这一路下来,估计已经不是同一个事务流程了吧?

Hex 发表于 2011-3-4 22:12:34

一个事物还要跨多个模型。。。我觉得这不是一个好的设计。

jet66 发表于 2011-3-5 21:47:51

一个事物还要跨多个模型。。。我觉得这不是一个好的设计。
Hex 发表于 2011-3-4 22:12 http://codeigniter.org.cn/forums/images/common/back.gif


   做的网页游戏里面还是会有很多的这种情况的

比方说:购买道具并发放的控制器
就得调用 货币的模型,扣钱
完成这个之后,紧接着还得调用发送道具的模型

这两个模型都有数据库操作,但还得成一个事务来处理。。。。

所以还是有些头痛。。。

Hex 发表于 2011-3-5 22:15:51

做的网页游戏里面还是会有很多的这种情况的

比方说:购买道具并发放的控制器
就得调用 货币的模型, ...
jet66 发表于 2011-3-5 21:47 http://myci.tk/forums/images/common/back.gif


    这应该放到一个模型里来做,这是一个原子操作。不同系统要根据实际情况设计。

jet66 发表于 2011-3-7 16:07:56

这应该放到一个模型里来做,这是一个原子操作。不同系统要根据实际情况设计。 ...
Hex 发表于 2011-3-5 22:15 http://codeigniter.org.cn/forums/images/common/back.gif


   放到一个模型里面,就容易所有模型都在一个模型里面。。OO对象很不清晰。。。。
页: [1]
查看完整版本: 想问一个对多模型中的MySQL事务处理办法