Rumah rangka kerja php ThinkPHP ThinkPHP6中的事务操作

ThinkPHP6中的事务操作

Jun 23, 2020 am 09:28 AM
thinkphp6

事务操作对很多新人来说,可能有点陌生,即使看了ThinkPHP6官方手册中事务操作的部分,也仍然不知所解。下面就给大家介绍下事务操作。

一、先说说使用场景。

假设我需要给朋友转账1000元钱,正常的业务逻辑是:

1、银行从我的账户中扣除1000元  

2、银行给朋友账户加上1000元。

如果一切顺利,则转账成功!

那么问题来了,如果我不小心把银行账户输错,导致银行查找不到我输入的银行账户,但是这个时候钱已经从我的账户扣除了,如何处理呢?

我们生活中经常说“如果钱打不过去,银行会退回来的”,就是这个意思。

2、事务操作定义。

那么通过上面的例子,我们理解下到底什么是事务操作,事务指的是逻辑上的一组操作,组成这组操作的各个单元要么全都成功,要么全都失败。

就如上面的打钱例子,要么打钱成功,如果不成功,需要把我的钱退回来,也就是返回到初始状态,也叫做“回滚”。

3、ThinkPHP6中的事务操作。

我们理解了事务操作的使用场景,那么在ThinkPHP6中如何使用呢?

Db::transaction(function () {
    Db::table('think_user')->insert(['name'=>'aaa']);
    Db::table('think_user')->delete(1);
});
Salin selepas log masuk

我们看上面的例子,只有当我们插入记录成功的时候才会做删除操作,如果插入不成功,不会做删除操作。

比如我们故意写错一个字段name1,数据表中没有name1该字段,插入程序不会执行成功,那么下面的删除语句没有问题,但是他依然不会执行。

除此之外,我们还可以手动控制事务。看下面代码:

// 启动事务
Db::startTrans();
try {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();
} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();
}
Salin selepas log masuk

以上就是ThinkPHP6中的事务操作的内容,通过咱们实际生活中的例子讲解,大家对事务操作就可以很好的理解了。

Atas ialah kandungan terperinci ThinkPHP6中的事务操作. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah pertimbangan utama untuk menggunakan ThinkPhp dalam seni bina tanpa pelayan? Apakah pertimbangan utama untuk menggunakan ThinkPhp dalam seni bina tanpa pelayan? Mar 18, 2025 pm 04:54 PM

Artikel ini membincangkan pertimbangan utama untuk menggunakan ThinkPhp dalam arkitek tanpa pelayan, memberi tumpuan kepada pengoptimuman prestasi, reka bentuk tanpa statik, dan keselamatan. Ia menyoroti faedah seperti kecekapan kos dan skalabiliti, tetapi juga menangani cabaran

Apakah ciri -ciri canggih bekas suntikan ketergantungan ThinkPhp? Apakah ciri -ciri canggih bekas suntikan ketergantungan ThinkPhp? Mar 18, 2025 pm 04:50 PM

ThinkPhp's Container IOC menawarkan ciri -ciri canggih seperti pemuatan malas, mengikat kontekstual, dan suntikan kaedah untuk pengurusan ketergantungan yang cekap di php apps.Character Count: 159

Apakah ciri-ciri utama rangka kerja ujian ThinkPHP? Apakah ciri-ciri utama rangka kerja ujian ThinkPHP? Mar 18, 2025 pm 05:01 PM

Artikel ini membincangkan rangka kerja ujian ThinkPHP, yang menonjolkan ciri-ciri utamanya seperti ujian unit dan integrasi, dan bagaimana ia meningkatkan kebolehpercayaan aplikasi melalui pengesanan bug awal dan kualiti kod yang lebih baik.

Apakah cara terbaik untuk mengendalikan muat naik fail dan penyimpanan awan di ThinkPhp? Apakah cara terbaik untuk mengendalikan muat naik fail dan penyimpanan awan di ThinkPhp? Mar 17, 2025 pm 02:28 PM

Artikel ini membincangkan amalan terbaik untuk mengendalikan muat naik fail dan mengintegrasikan penyimpanan awan di ThinkPhp, yang memberi tumpuan kepada keselamatan, kecekapan, dan skalabiliti.

Bagaimana untuk melaksanakan penemuan perkhidmatan dan mengimbangi beban dalam microservices ThinkPHP? Bagaimana untuk melaksanakan penemuan perkhidmatan dan mengimbangi beban dalam microservices ThinkPHP? Mar 18, 2025 pm 04:51 PM

Artikel ini membincangkan pelaksanaan penemuan perkhidmatan dan mengimbangi beban dalam microservices ThinkPHP, memberi tumpuan kepada persediaan, amalan terbaik, kaedah integrasi, dan alat yang disyorkan. [159 aksara]

Bagaimana untuk membina sistem giliran tugas yang diedarkan dengan ThinkPhp dan RabbitMQ? Bagaimana untuk membina sistem giliran tugas yang diedarkan dengan ThinkPhp dan RabbitMQ? Mar 18, 2025 pm 04:45 PM

Artikel ini menggariskan membina sistem giliran tugas yang diedarkan menggunakan ThinkPhp dan RabbitMQ, yang memberi tumpuan kepada pemasangan, konfigurasi, pengurusan tugas, dan skalabilitas. Isu -isu utama termasuk memastikan ketersediaan yang tinggi, mengelakkan perangkap biasa seperti implope

Bagaimana cara menggunakan ThinkPhp untuk membina alat kerjasama masa nyata? Bagaimana cara menggunakan ThinkPhp untuk membina alat kerjasama masa nyata? Mar 18, 2025 pm 04:49 PM

Artikel ini membincangkan menggunakan ThinkPHP untuk membina alat kerjasama masa nyata, memberi tumpuan kepada persediaan, integrasi WebSocket, dan amalan terbaik keselamatan.

Bagaimana cara menggunakan ThinkPhp untuk membina suapan data pasaran saham masa nyata? Bagaimana cara menggunakan ThinkPhp untuk membina suapan data pasaran saham masa nyata? Mar 18, 2025 pm 04:57 PM

Artikel membincangkan menggunakan ThinkPHP untuk suapan data pasaran saham masa nyata, memberi tumpuan kepada persediaan, ketepatan data, pengoptimuman, dan langkah-langkah keselamatan.

See all articles