为什么一个表在更新而另一个不在laravel中?

时间:2019-01-18 04:35:26

标签: laravel

当我单击“编辑”按钮时,我试图从两个表中获取数据并将它们一起更新。一个是用户表,另一个是用户明细表。 当我更新信息时,用户表正在更新,但用户表未更新而正在创建新行。该怎么解决?

相同的代码适用于一个表,而不适用于另一个表。

这是我的更新功能。

public function update(Request $request, $id)
       {
         // $this->validate($request,[
         //     'title'=>'required',
        //     'body'=>'required',
        // ]);
     //$user=new User;
     $user = User::find($id);
     $user->student_no=$request->input('student_no');
     $user->email=$request->input('email');
     $user->save();

     $user_detail=new Profile;
     $user_detail = Profile::find($id);
     $user_detail->student_no=$request->input('student_no');
     $user_detail->profile_pic=$request->input('CID');
      $user_detail->CID=$request->input('CID');
      $user_detail->DOB=$request->input('DOB');
      $user_detail->mobile_no=$request->input('mobile_no');
      $user_detail->joining_year=$request->input('joining_year');
      $user_detail->graduation_year=$request->input('graduation_year');
      $user_detail->program_id=$request->input('programe_id');
      $user_detail->work_experience=$request->input('work_experience');
      $user_detail->save();

     return redirect('/dashboard')->with('success','Post Updated');

用户表正在更新,但user_detail未更新。

5 个答案:

答案 0 :(得分:1)

删除行,

$user_detail=new Profile;

并排

$user_detail = Profile::find($id);

在这里你不能这样。你必须要做类似的事情

$user_detail = Profile::where('user_id','=',$id)->first();

然后您的代码应如下所示,

public function update(Request $request, $id)
       {
         // $this->validate($request,[
         //     'title'=>'required',
        //     'body'=>'required',
        // ]);
     //$user=new User;
     $user = User::find($id);
     $user->student_no=$request->input('student_no');
     $user->email=$request->input('email');
     $user->save();

    $user_detail = Profile::where('user_id','=',$id)->first();
     $user_detail->student_no=$request->input('student_no');
     $user_detail->profile_pic=$request->input('CID');
      $user_detail->CID=$request->input('CID');
      $user_detail->DOB=$request->input('DOB');
      $user_detail->mobile_no=$request->input('mobile_no');
      $user_detail->joining_year=$request->input('joining_year');
      $user_detail->graduation_year=$request->input('graduation_year');
      $user_detail->program_id=$request->input('programe_id');
      $user_detail->work_experience=$request->input('work_experience');
      $user_detail->save();

     return redirect('/dashboard')->with('success','Post Updated');

答案 1 :(得分:0)

  1. 删除$user_detail=new Profile;
  2. 使用关系来更新用户详细信息。
  3. 在Laravel中了解$request->all()Mass Assignment
  4. 在单独的文件中进行表单验证。

答案 2 :(得分:0)

$ user_detail =配置文件:: find($ id); 在这一行中,您正在使用概要文件表的主键检查概要文件数据,该主键可能不存在

您可以尝试

$user_detail = Profile::where('user_id',$id)->first();

user_id is the fk on profiles table from user id.

答案 3 :(得分:0)

您应删除第$user_detail=new Profile;行 并如下更新第$user_detail = Profile::find($id);

$user_detail = Profile::where('user_id',$id)->first()

答案 4 :(得分:0)

您的查询有两三件事。

$user_detail=new Profile;
$user_detail = Profile::find($id);

首先不需要 新个人资料 行。它只是创造了一个新对象,但您无需再去更新某人的个人资料, 现在打印您的第二行响应,以免收到任何响应,它也是正确的,因为您的发现ID不是user_id。 否则就没有问题。 希望您能找到解决方法。