【问题标题】:laravel not updating data, just refreshlaravel 不更新数据,只刷新
【发布时间】:2020-12-11 14:33:36
【问题描述】:

你好,我有两个表用户和配置文件,我有一个表格来更新用户配置文件,当我尝试更新时,它只是刷新页面但没有任何更新,并且没有错误
这是我的代码:

ProfilesControllers:

public function update(Request $request)
    {
        $this->validate($request,[

            'name'=>'required',
            'email'=>'required|email',
            'about'=>'required',
            'facebook'=>'required|url',
            'instagram'=>'required|url',
        ]);

        $user = Auth::user();
        if($request->hasFile('avatar')){

            $avatar = $request->avatar;

            $avatar_new_name = time() . $avatar->getClientOriginalName();

            $avatar->move('uploads/avatars', $avatar_new_name);

            $user->profile->avatar = 'uploads/avatars'.$avatar_new_name;

            $user->profile->save();
        }
        $user->name = $request->name;
        $user->email = $request->email;
        $user->profile->facebook = $request->facebook;
        $user->profile->instagram = $request->instagram;
        $user->profile->about = $request->about;
        

        if($request->has('password')){
            $user->password=bcrypt($request->password);
            $user->save();

        }

        $user->save();
        $user->profile->save($user->profile);

        return redirect()->back();

    }

profile.blade.php:

    <form action="{{ route('user.profile.update')}}" method="POST" enctype="multipart/form-data">
    
        {{ csrf_field() }}
       
/// here is my input fields
    
    </form>

我正在使用 Laravel:6.20.5 有人可以告诉我代码中的问题在哪里吗?谢谢

【问题讨论】:

  • $user = Auth::user();更改为$user = User::find(Auth::user()-&gt;id);
  • @sta 对不起,即使我这样做了仍然有同样的问题
  • 检查更新方法是否被触发?我的意思是你可以在更新方法中dd($request-&gt;all())并检查
  • @Donkarnash 是的,我已经尝试过 dd($request->all()),我可以在屏幕上看到我的数据
  • 您是否检查过它是否也通过了验证。验证后是否也会执行 dd

标签: php laravel laravel-6


【解决方案1】:

你可以试试这个:

而不是 $avatar = $request->头像;

使用

$avatar = $request->file('avatar');

而不是 $avatar->move('uploads/avatars', $avatar_new_name);

使用

$request->file('avatar')->storeAs('uploads/avatars', $avatar_new_name);

当使用 back() 时,不需要 redirect()。 back() 生成一个 HTTP 重定向。

所以

return back();

【讨论】:

  • 谢谢你,但仍然面临同样的问题,页面刷新但数据库中没有更新
  • 嗯...可能是验证问题。首先尝试摆脱您的验证码。看看它是否改变了什么。
  • 感谢您的工作,您在验证中是对的
  • 好的。找出问题所在并在我上面的答案中应用更正。应该工作:)
猜你喜欢
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
  • 2012-04-25
  • 2016-08-11
相关资源
最近更新 更多