Bad*_*sie 2 cakephp transactions cakephp-1.3
如何在控制器中启动事务,然后尝试保存彼此无关的多个模型?如果有任何失败,显然我希望回滚,如果一切正常,那么提交.
我想我的问题是我在哪个模型上开始交易?
$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);
}
Run Code Online (Sandbox Code Playgroud)
这项工作是否可以确保狗和房子保存以及汽车?即交易是以哪种模式开始的?
使用哪种模型来启动事务并不重要,但通常人们会使用与控制器"最接近"的模型(如果有的话).
$continue = true;
$this->Car->begin();
// Do stuff that might set $continue to false.
if ($continue) {
$this->Car->commit();
} else {
$this->Car->rollback();
}
Run Code Online (Sandbox Code Playgroud)
要在"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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2023 次 |
| 最近记录: |