首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ajax在数据库中保存而没有外键

ajax在数据库中保存而没有外键
EN

Stack Overflow用户
提问于 2016-12-14 09:11:28
回答 2查看 246关注 0票数 0

我有一张供用户注册的表格。此表单有一个文件输入,当用户选择一个文件时,ajax将立即将图像上传到服务器的目录中。还有一个按钮,它将提交表单并将用户信息保存在数据库中的user表中。

每个用户可以有多个图像。Ajax还在文件上传时将图像地址保存在photos表中。此表有user_id列。但是,由于当单击submit按钮而用户尚未注册时将生成user_id,所以我无法在photos表中填充user_id列。当提交整个表单时,将生成用户的id。

因此,当表单提交时,应该通过向photos列添加用户id来更新user_id表吗?或者我必须用ajax将照片保存在temporary_photos表中,然后当点击提交时,将它们保存在主照片表中,然后从临时表中删除它们?

还是有别的办法?

如果用户上传文件,但不按submit按钮就关闭窗口,怎么办?我是如何发现窗口关闭和注册被取消,所以我将删除图像?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-14 09:23:08

你在试图解决你创造的一个问题。如果user_id是保存照片的依赖项,那么让用户保存first.If,这样做会使工作流程变得复杂。

因此,我建议您先注册用户,在会话中保存用户id (或登录用户),然后上传照片。

如果必须一起完成,那么让ajax请求注册用户,然后保存照片并将user_id保存在会话变量中。下次上传照片时,您可以从会话变量中获取用户,并保存照片。

代码语言:javascript
复制
function savePhoto(Request $input){
   if(Session::has('user_id'){
     $user = User::find(Session::get('user_id'));
   }
   else{
     $user = User::create($input->all());
   }

   $user->photo->save($input->all());
 }
票数 2
EN

Stack Overflow用户

发布于 2016-12-14 09:25:22

你可以试试这个方法-

因为一个用户可以有多个图像,这意味着这个关系是一对多之间的。所以如果您使用images表,情况会更好。

表:图像

栏:id, user_id, image, uploaded_at

Make user_id字段为空,image列将保存上传图像的名称。成功上传和添加iamges记录到数据库后,将最后插入的ids保存在会话数组中。一旦用户提交表单,创建一个记录到user表,获取最后一个插入它,检查会话数组中是否有任何数据(如果找到),循环遍历数组并按id选择那些图像记录并更新user_id字段。这会解决你的问题。

您还要求一种删除用户未提交表单的图像的方法。要做到这一点,您可以运行cronjob/laravel任务调度。一个将删除图像并删除5分钟前上传的图像和user_id的记录的脚本仍然是空的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41138679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档