php - 更新 Laravel 5.2 时数据库中的数据未更新

标签 php database laravel laravel-5 laravel-5.2

我只是在我的应用程序中实现了 CRUD,但是 UPDATE 没有更新数据库中的数据,我 var_dump($user->name) 但它什么也不输出。请查看代码并帮助我。我正在使用 Laravel 5.2 和资源 Controller 。

PS:编辑工作正常,例如在此 URL http://localhost/pos/users/6/edit?id=6 我可以用所需的数据填充 View 字段但是当我点击更新数据库中没有更新。

用户 Controller :

  public function edit($id)
        {
            $user = User::find($id);
            return view('user.update')->with('userToUpdate',$user);
        }

        /**
         * Update the specified resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function update(Request $request, $id)
        {
            $user = User::find($id);
            $user->name = Input::get('name');
            $user->email = Input::get('email');
            $user->password = bcrypt(Input::get('password'));
            $user->save();      
            return Redirect::to('/users')->with('message', 'User Updated');
        }

更新 View :

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Update</div>
                <div class="panel-body">
                    <form class="form-horizontal" role="form" method="PUT" action="{{ url('/users') }}">
                        {!! csrf_field() !!}

                        <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
                            <label class="col-md-4 control-label">Name</label>

                            <div class="col-md-6">
                                <input type="text" class="form-control" name="name" value="{!! $userToUpdate->name !!}">

                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                            <label class="col-md-4 control-label">E-Mail Address</label>

                            <div class="col-md-6">
                                <input type="email" class="form-control" name="email" value="{!! $userToUpdate->email !!}">
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                            <label class="col-md-4 control-label">Password</label>

                            <div class="col-md-6">
                                <input type="password" class="form-control" name="password" value="{!! $userToUpdate->password !!}">
                            </div>
                        </div>


                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <button type="submit" class="btn btn-primary">
                                    <i class="fa fa-btn fa-user"></i>Update
                                </button>
                            </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

用户模型:

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

路线:

Route::group(['middleware' => 'web'], function () {
    Route::get('/', function () {
        return view('welcome');
    });

    Route::auth();

    Route::get('/home', 'HomeController@index');
    Route::get('/register', function(){
        return view('auth.register');
    })->middleware('isAdmin');
    Route::resource('/users', 'UsersController');

});

最佳答案

来自 laravel 文档:

https://laravel.com/docs/5.0/routing#method-spoofing

HTML forms do not support PUT, PATCH or DELETE actions. So, when defining PUT, PATCH or DELETE routes that are called from an HTML form, you will need to add a hidden _method field to the form.

但是 Route::resource 指定更新需要使用 PUT 方法。因此,您的表单需要:

<form class="form-horizontal" role="form" method="POST" action="{{ url('/users', $userToUpdate->id) }}">
     {!! csrf_field() !!}
     <input type="hidden" name="_method" value="PUT">

关于php - 更新 Laravel 5.2 时数据库中的数据未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36402595/

相关文章:

javascript - $(window).bind ('hashchange',函数()在我的IE9中不起作用

java - 找不到连接数据库的错误

php - 避免在 Controller 上使用 Laravel facade

javascript - 未捕获的类型错误 : Cannot read property 'scrollHeight' of null

php - 什么是可以在 PHP 5.3 上解析和重建 SQL 查询的优秀查询生成器?

php - 如何使用 PHP & UNION 连接未知数量的 mysql 数据库?

mySQL插入和删除错误

sql - 如何将 SQL Server Management studio - "Execute Stored Procedure"用于用户定义的表类型?

php - laravel 4 发送邮件时如何处理回调

php - 如何在PHP中正确打印对象内容?