我在3个不同的PHP页面上有3个HTML表单,用于在3个不同的表中插入数据。
当前过程如下:
我想要:
仅当用户填写所有3个表单并单击“完成”时,才必须发出提交。如果用户在填写所有三种表单之前在任何阶段退出/退出,则应回滚存储在表中的所有数据。
我可以使用LaravelDB::Transaction
还是有其他选择?请提出任何建议。
实际上,在每个步骤中,用户都可以在一个表中添加多个记录。例如,在第三步,用户可以在subjects
表中添加任意数量的记录。我使用以下代码将这些多个记录保存在table中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();
}
现在的问题是:如何存储对的所有模型的引用Subject
?我想到的唯一解决方案是进行交易,并且COMMIT
仅在第3步之后才能进行交易回滚。
为什么不将表单数据放入临时会话变量中,而仅在完成步骤3之后才将所有数据从会话插入数据库?
为什么要改用这种方法?
1)数据库中没有垃圾。
2)会话会在用户离开您的网页后自动清理(有意或无意)。
3)您可以在步骤之间自由移动,所有信息将自动填写或返回。
4)只有一个数据库连接-更快的网站。
5)使您能够使用交易。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句