Heim >PHP-Framework >Denken Sie an PHP >Transaktionsvorgänge in ThinkPHP6

Transaktionsvorgänge in ThinkPHP6

王雪芹
王雪芹Original
2020-06-23 09:28:596588Durchsuche

Die Transaktionsoperation ist für viele Neulinge möglicherweise etwas ungewohnt. Selbst nachdem sie den Teil der Transaktionsoperation im offiziellen ThinkPHP6-Handbuch gelesen haben, verstehen sie ihn immer noch nicht. Als nächstes werde ich Ihnen die Transaktionsvorgänge vorstellen.

1. Lassen Sie uns zunächst über die Nutzungsszenarien sprechen.

Angenommen, ich muss 1.000 Yuan an einen Freund überweisen:

1. Die Bank bucht 1.000 Yuan von meinem Konto ab

2. Die Bank fügte dem Konto des Freundes 1.000 Yuan hinzu.

Wenn alles gut geht, ist die Übertragung erfolgreich!

Dann stellt sich die Frage: Was soll ich tun, wenn ich versehentlich das falsche Bankkonto eingebe und die Bank das von mir eingegebene Bankkonto nicht finden kann, das Geld jedoch zu diesem Zeitpunkt von meinem Konto abgebucht wurde?

Wir sagen in unserem Leben oft: „Wenn das Geld nicht überwiesen werden kann, gibt die Bank es zurück.“

2. Definition der Transaktionsoperation.

Anhand des obigen Beispiels verstehen wir, was eine Transaktionsoperation ist. Eine Transaktion bezieht sich auf eine logische Gruppe von Operationen, die entweder alle erfolgreich sind oder alle fehlschlagen.

Genau wie im obigen Beispiel für eine Geldüberweisung: Entweder ist die Überweisung erfolgreich, wenn nicht, muss ich mein Geld zurückgeben, was bedeutet, dass ich in den Ausgangszustand zurückkehre, auch „Rollback“ genannt.

3. Transaktionsvorgänge in ThinkPHP6.

Wir verstehen die Nutzungsszenarien von Transaktionsvorgängen. Wie kann man sie also in ThinkPHP6 verwenden?

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

Im obigen Beispiel wird der Löschvorgang nur ausgeführt, wenn wir den Datensatz erfolgreich eingefügt haben. Wenn das Einfügen nicht erfolgreich ist, wird der Löschvorgang nicht ausgeführt.

Wenn wir beispielsweise absichtlich einen falschen Feldnamen1 schreiben, der Feldname1 nicht in der Datentabelle vorhanden ist und das Einfügeprogramm nicht erfolgreich ausgeführt wird, ist die folgende Löschanweisung kein Problem, aber es wird immer noch nicht ausgeführt.

Darüber hinaus können wir Transaktionen auch manuell steuern. Schauen Sie sich den folgenden Code an:

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

Das Obige ist der Inhalt der Transaktionsoperationen in ThinkPHP6. Durch die Erläuterung der Beispiele aus unserem wirklichen Leben kann jeder die Transaktionsoperationen gut verstehen.

Das obige ist der detaillierte Inhalt vonTransaktionsvorgänge in ThinkPHP6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn