Php 如何在多个页面上继续事务
我在3个不同的PHP页面上有3个HTML表单,用于在3个不同的表中插入数据 目前的进程如下:Php 如何在多个页面上继续事务,php,mysql,laravel-4,Php,Mysql,Laravel 4,我在3个不同的PHP页面上有3个HTML表单,用于在3个不同的表中插入数据 目前的进程如下: 用户填写第一个表单并单击“下一步”(数据插入数据库的第一个表中) 用户填写第二个表单并单击“下一步”(数据存储在数据库的第二个表中) 用户填写第三个表单并单击“完成”(数据存储在数据库的第三个表中) 我想: 只有在用户填写所有3个表单并单击“完成”时,才必须发出提交。如果用户在填写所有三个表单之前退出/退出任何阶段,则应回滚存储在表中的所有数据 我可以使用LaravelDB::Transaction
- 用户填写第一个表单并单击“下一步”(数据插入数据库的第一个表中)
- 用户填写第二个表单并单击“下一步”(数据存储在数据库的第二个表中)
- 用户填写第三个表单并单击“完成”(数据存储在数据库的第三个表中)
DB::Transaction
吗?或者我有其他选择吗?请给出任何建议
实际上,在每个步骤中,用户可以在一个表中添加多条记录。例如,在第三步中,用户可以根据需要在subjects
表中添加任意数量的记录。我使用以下代码将这些多条记录保存在表subjects
中:
for($i=1; $i<=Input::get('total_subjects'); $i++){
if(Input::get('sub_'.$i) != null){
$sd = new Subject;
$sd->class_detail_id = Input::get('class_detail_id');
$sd->subject_id = Input::get('sub_'.$i);
$sd->status = 'ACTIVE';
$sd->save();
}
for($i=1;$iclass\u detail\u id=Input::get('class\u detail\u id');
$sd->subject_id=Input::get('sub_'.$i);
$sd->status='ACTIVE';
$sd->save();
}
现在的问题是:
如何存储对主题的所有模型的引用?
我想到的唯一解决方案是只在第3步后进行事务处理,然后提交,否则事务将回滚。为什么不将表单数据放入临时会话变量,并且只在完成第3步后将所有数据从会话插入数据库
为什么要使用这种方法呢
1) 数据库中没有垃圾。
2) 用户离开您的网页后,会话自动清理自身(自愿或意外)。
3) 您可以在步骤之间自由移动,所有信息将自动填写或返回。
4) 只有一个数据库连接-更快的网站。
5) 允许您使用事务。我被分配了相同的任务,我选择了下面的解决方案。虽然从技术上讲,在几个HTTP请求期间保持PHP进程处于活动状态是可能的,但这样做既不明智也不实用。如果您详细介绍几种解决方案的优缺点,这将是一个很好的答案。在此之前,这只是一个评论。