【问题标题】:How to update value in User Table in laravel 5.1如何在 laravel 5.1 中更新用户表中的值
【发布时间】:2016-08-15 05:11:54
【问题描述】:

我有一个问题,我无法更新我的用户表。我不知道他的问题出在哪里。每当我提交更新的信息时,它都无法更新。它不显示任何错误。但是表格没有更新。请帮帮我。 我的控制器是

public function getUpdate() {

        $profile = Auth::user();
        return view('admin.article.edit')
        ->with('profile',$profile);
    }

    public function postUpdate(Request $request ) {
$profile = Auth::user();

        $this->validate($request, [
            'name' => 'required|max:120',
            'username' => 'required|max:80',
            'email' => 'required',
            'password' => 'required'
            ]);

         // save users table
        $profile = Auth::user();
        // $user = new App\User;
        $profile->name = $request->input('name');
        $profile->email = $request->input('email');
        $profile->username = $request->input('username');
        $profile->password = $request->input('password');
        $profile->update();
}

我的edit.blade.php页面是

<?php $active="profile"; ?>
@extends('admin.dashboard')
@section('content')
  <!-- Content Wrapper. Contains page content -->
  <div class="content-wrapper">
    <!-- Content Header (Page header) -->
    <section class="content-header">
      <h1>
        User Profile
      </h1>
      <ol class="breadcrumb">
        <li><a href="#"><i class="fa fa-dashboard"></i> Home</a></li>
        <li class="active">User profile</li>
      </ol>
    </section>

<!-- Main content -->
    <section class="content">
      <div class="row">
        <!-- left column -->
        <div class="col-md-10">
          <!-- general form elements -->
          <div class="box box-primary">
            <div class="box-header with-border">
              <h3 class="box-title">Quick Example</h3>
            </div>
            <!-- /.box-header -->
            <!-- form start -->
            <form action="{{ route('update') }}" role="form" method="post" enctype="multipart/form-data">
              <div class="box-body">
                <div class="form-group">
                  <label for="name">Name</label>
                  <input type="text" class="form-control" name="name" id="name" {{ $errors->has('name') ? 'class=has-error' : '' }} value="{{ Request::old('name') ? Request::old('name') : isset($profile) ? $profile->name : '' }}">
                </div>
                <div class="form-group">
                  <label for="username">User Name</label>
                  <input type="text" class="form-control" name="institute" id="institute" {{ $errors->has('username') ? 'class=has-error' : '' }} value="{{ Request::old('institute') ? Request::old('username') : isset($profile) ? $profile->institute : '' }}">
                </div>
</div>
              <!-- /.box-body -->

              <div class="box-footer">
                <button type="submit" class="btn btn-primary">Submit</button>
                <input type="hidden" name="_token" value="{{ Session::token() }}">
                <input type="hidden" name="id" value="{{ $profile->id }}">
              </div>
            </form>
          </div>
          <!-- /.box -->

        </div>
        <!--/.col (left) -->
      </div>
      <!-- /.row -->
    </section>
    <!-- /.content -->
@endsection  

我的路线文件是

Route::get('/profile/edit', [
                    'uses' => 'ProfileController@getUpdate',
                    'as' => 'edit'
            ]);

        Route::post('profile/update', [
                    'uses' => 'ProfileController@postUpdate',
                    'as' => 'update'
            ]);

【问题讨论】:

  • 在你的 postUpdate 我看到 $profile = Auth::user();两次为什么?
  • 要获取我的用户信息并更新它,我使用 $profile = Auth::user();两次。 @Iftikhar uddin

标签: php mysql laravel eloquent laravel-5.1


【解决方案1】:

在你的路线中你应该写这个

Route::get('/profile/{profile_id}/edit', [
                    'uses' => 'ProfileController@getUpdate',
                    'as' => 'edit'
            ]);

        Route::post('profile/update', [
                    'uses' => 'ProfileController@postUpdate',
                    'as' => 'update'
            ]);

在你的控制器中你应该写这个

public function getUpdate() {
        $divisions = Division::all();
        $districts = District::all();
        $dcategories = Dcategory::all();
        $profile = Auth::user();

        return view('admin.article.edit')
        ->with('divisions',$divisions)
        ->with('districts',$districts)
        ->with('dcategories',$dcategories)
        ->with('profile',$profile);
    }

    public function postUpdate(Request $request ) {

        $this->validate($request, [
            'name' => 'required|max:120',
            'fee' => 'required|max:5',
            'division_id' => '',
            'district_id' => '',
            'dcategory_id' => '',
            'education' => '',
            'institute' => '',
            'specialty' => '',
            'hospital' => '',
            'time' => '',
            'phone' => '',
            'image' =>''            
            ]);


        $doctor = Auth::user();
        $doctor->name = $request['name'];
        $doctor->division_id = $request['division_id'];
        $doctor->district_id = $request['district_id'];
        $doctor->dcategory_id = $request['dcategory_id'];
        $doctor->institute = $request['institute'];
        $doctor->education = $request['education'];
        $doctor->specialty = $request['specialty'];
        $doctor->hospital = $request['hospital'];
        $doctor->phone = $request['phone'];
        $doctor->time = $request['time'];
        $doctor->fee = $request['fee'];

        // $photo = Photo::find($request['id']);
        $logo=$request->file('image');
        if(!empty($logo)) {
            $upload='uploads/logo';
            $filename=$logo->getClientOriginalName();
            $success=$logo->move($upload,$filename);

            $doctor->image = $filename;
        }

这可能会解决您的问题。

【讨论】:

    【解决方案2】:

    试试这个

    首先检查您是否已将要更新的所有字段设为可填写。

    App/Entites/User.php

    <?php
    protected $fillable = ['name', 'email', 'password','username'];
    

    然后更新记录

    $profile = Auth::user();
    $profile->name = $request->name;
    $profile->email = $request->email;
    $profile->username = $request->institute;
    $profile->password = bcrypt($request->password);
    $profile->save();
    

    【讨论】:

      【解决方案3】:
      $profile = Auth::user();
      

      创建一个新行,$profile-&gt;save(); 将保存记录。

      要更新特定行,请指定该行。例如

          $id=$request->input('id');
      
          $profile = User::where(['id'=>$id])->first();
          $profile->name = $request->input('name');
          $profile->email = $request->input('email');
          $profile->username = $request->input('username');
          $profile->password = $request->input('password');
          $profile->update();
      

      【讨论】:

      • 没用。它仍然没有更新记录。 @Sanzeeb Aryal
      • 不,它没有给我任何错误,但它没有更新我的信息@Sanzeeb Aryal
      【解决方案4】:

      它没有更新,因为在您的表单视图中,名称属性中没有您的用户名

      name="institute" 
      

      将其更改为用户名并尝试。另外,您没有密码和电子邮件字段。

      【讨论】:

      • 您是否将名称字段更改为用户名?
      • $profile-&gt;username = $request-&gt;input('username'); 这会从 name = 'username' 而你有 name = 'institute' 的请求中获取用户,它不会那样工作。
      • 我将 name='institute' 更改为 name='username'。但它也不起作用
      • 好的,一旦您将其更改为用户名,现在将 ->update 更改为 ->save 并尝试!
      • 您的表单有错误删除它,它肯定会工作。
      【解决方案5】:

      假设您从 auth() 获取用户。所以改变

      $profile = Auth::user();
      $profile->name = $request->input('name');
      $profile->email = $request->input('email');
      $profile->username = $request->input('username');
      $profile->password = $request->input('password');
      $profile->update();
      

      $profile = Auth::user();
      $profile->name = $request->input('name');
      $profile->email = $request->input('email');
      $profile->username = $request->input('username');
      // Hash
      $profile->password = \Hash::make($request->input('password'));
      // Change to save method
      $profile->save();
      

      试试吧!

      【讨论】:

      • 不,它没有工作@KmasterYC.Still它没有更新用户信息
      • 我发现验证存在问题。它与表单请求不匹配。删除或更改验证并再次测试
      • 你能告诉我验证@KmasterYC的更新代码是什么
      • 请检查表格。它只有 2 个变量,但在控制器中您验证 4 个变量
      • 我从控制器中删除了其他 2 个变量,但它仍然没有工作@KmasterYC
      【解决方案6】:
      //this will load the currently logged in user
      $profile = auth()->user();
      
      //if your user db have column 'name' and you wanna update it
      $profile->name = 'Jezzabelle';
      
      //save to the db
      $profile->save();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-25
        • 2016-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多