我正在开发一个项目,我在其中创建了类,如学生,科目,课程,课程等。所有这些类都有一个构造函数,我在其中传递$db
,因为所有类都有自己的插入和更新,这是正常的。
现在我的问题是如何在这种结构中管理交易?我不想在一个类中编写所有插入和更新,我希望它们在自己的类中。
答案 0 :(得分:1)
使用DBO对象中的事务性功能,只要您首先启动事务,然后在遍历所有对象时提交或回滚,您仍然可以在各自的对象中进行实际查询。您将传递一个实例化的PDO对象作为$ db。
请参阅此处获取文档: php.net/manual/en/pdo.transactions.php
一个随机的例子:
$dbo = new PDO(...); // init connection
$student = new Student($dbo, 1); // retrieves student where id=1 from table
$subject = new Subject($dbo, 1); // retrieves subject where id=1 from table
$student->setName('Bart');
$subject->setName('Nose picking 101');
$dbo->beginTransaction();
$student->store(); // executes an update on $dbo
$subject->store(); // ...
$db->commit(); // or ->rollBack(); in case something didn't go as planned