Laravel update()函数不会更新任何字段

时间:2019-11-09 09:08:56

标签: php laravel

因此,我已经将我的默认用户表修改为一个名为“ customusers”的表,注册用户的所有数据都将存放在该表中。数据包括姓名/电子邮件/性别/描述等。在注册时,它们被重定向到打印所有数据的主页。现在,如果他们要编辑该数据,则单击“编辑”按钮,这会将其带到一个名为“ Edit.blade.php”的页面,然后编辑其凭据并按更新。直到这里的一切都在为我工作。但是,当他们按Update(更新)时,它只是将他们带回到主页,而不会更新任何内容。没有更改被保存。以下是我的代码:

Display.blade.php (主页):

<div id="wrapper">

<div id="content">
  <div id="card">
    <div id="front">
      <div id="top-pic"></div>
    <div id="avatar"><span style="position: absolute;padding-top: 17px;margin-left: 34px;color:  #fff;font-size:  64px;" class="h5">
        {{ Auth::user()->name[0] }}
    </span></div>
      <div id="info-box">
        <div class="info">
          <h1>{{ Auth::user()->name }}</h1>
          <h2>{{ Auth::user()->message }}</h2>
        </div>
      </div>
      <div id="social-bar">
        <a href="{{ Auth::user()->facebook }}" target="_blank">
          <i class="fa fa-facebook"></i>
        </a>
        <a href="{{ Auth::user()->twitter }}" target="_blank">
        <i class="fa fa-twitter"></i>
        </a>

        {{ link_to_route('display.edit','',[Auth::user()->id],['class'=>'fa fa-edit']) }}

      </div>
    </div>

Edit.blade.php

{!! Form::model(Auth::user(),array('route'=>['display.update',Auth::user()->id],'method'=>'PUT')) !!}
            <div class="form-group">
                    {!! Form::text('name',null,['class'=>'form-control','placeholder'=>'Name']) !!}
             </div>
            <div class="form-group">
                    {!! Form::email('email',null,['class'=>'form-control','placeholder'=>'Email']) !!}
            </div>
                <div class="form-group form-row">
                        <div class="col-5">
                                {!! Form::select('gender', ['Male' => 'Male', 'Female' => 'Female'], null, ['class'=>'form-control','placeholder'=>'Choose Gender']); !!}
                        </div>
                        <div class="col">
                                {!! Form::text('facebook',null,['class'=>'form-control','placeholder'=>'Facebook ID']) !!}
                        </div>
                        <div class="col">
                                {!! Form::text('twitter',null,['class'=>'form-control','placeholder'=>'Twitter Handle']) !!}
                        </div>
                </div>
                <div class="form-group">
                        {!! Form::textarea('message',null,['class'=>'form-control','placeholder'=>'Talk about yourself']) !!}
                </div>
                <div class="form-group">
                        {!! Form::button('Update Profile',['type'=>'submit','class'=>'btn btn-danger col-lg-12']) !!}
                </div>
                {!! Form::close() !!}

ProfileController (资源控制器):

    class ProfileController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $customusers = DB::table('customusers')->get();
        return view ('display',compact('customusers'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
       //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit(CustomUser $customuser) 
    {
        $customuser = DB::table('customusers')->get();
        return view ('edit',compact('customuser'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, CustomUser $customuser)
    {
      $customuser->update($request->all());
        return redirect()->route('display.index');
    }


    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Web.php (路由):

 Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::resource('/display','ProfileController');

因此,当我按update时,它只是将我重定向回display.blade.php(应有),但是没有保存任何更改。让我知道,如果您需要查看我的其他代码,请先谢谢。

1 个答案:

答案 0 :(得分:0)

点击控制器的更新方法时,请dd($request->all());为我们服务。

您也可以同时为$ customUser执行此操作,以确保它是正确的模型。

请把结果贴出来给我回复。

我想确保键与数据库的表列标题匹配。 我也有一种感觉,$ request-> all()将包含一个_token密钥,这可能会导致更新问题。在这种情况下,您需要从数组中删除_token,最简单的方法是创建一个新变量作为数组,并用适当的表列名称作为键及其值作为关联的输入填充新数组请求中的值。

我通常只使用$ request并将模型ID与请求一起传递,然后我将执行以下操作:

$data =[];
$data['twitter'] = $request->get('twitter');

$customuser = Customuser::find($request->customeruserID);

$customeruser->update($data);