gpt4 book ai didi

CakePHP 1.3 - 用于保存不相关模型的事务

转载 作者:行者123 更新时间:2023-12-02 08:46:18 24 4
gpt4 key购买 nike

如何在 Controller 中启动事务,然后尝试保存多个彼此无关的模型?如果有任何失败,显然我希望回滚,如果一切正常,然后提交。

我想我的问题是我应该在哪个模型上开始交易?

$datasource = $this->Car->getDataSource();
$datasource->begin($this->Car);

$car = $this->Car->save();
$dog = $this->Dog->save();
$house = $this->House->save();

if ($car && $dog && $house) {
$datasource->commit($this->Car);
} else {
$datasource->rollback($this->Car);
}

这能否确保 Dog 和 House 以及 Car 的保存?即,交易在哪个模型上启动重要吗?

最佳答案

使用哪种模型启动事务并不重要,但通常人们会使用“最接近” Controller 的模型(如果有的话)。

$continue = true;
$this->Car->begin();

// Do stuff that might set $continue to false.

if ($continue) {
$this->Car->commit();
} else {
$this->Car->rollback();
}

要在“Do stuff”位期间设置 $continue,请检查每个保存等。

if (!$this->Car->save()) {
$continue = false;
}

if ($continue) {
if (!$this->Dog->save()) {
$continue = false;
}
}

if ($continue) {
if (!$this->House->save()) {
$continue = false;
}
}

关于CakePHP 1.3 - 用于保存不相关模型的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12262771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com