【问题标题】:Laravel 5 - Error updating with Form FacadeLaravel 5 - 使用 Form Facade 更新时出错
【发布时间】:2016-03-27 14:21:27
【问题描述】:

我尝试在 laravel 中使用表单外观更新用户对象,提交后我收到错误:

ErrorException in Grammar.php line 102:
Argument 1 passed to Illuminate\Database\Grammar::columnize() must be of the type array, 
string given, called in 
C:\Laravel Projects\ExpenseTool\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php on line 105 and defined

我的要求:

<?php namespace App\Http\Requests;

use App\Http\Requests\Request;

class UserRequest extends Request {

/**
 * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    return true;
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        'name' => 'required|min:3',
        'email'
    ];
}

}

我的 HomeController 索引:

public function index()
{
    $user = Auth::user();
    return view('Expenses.home', compact( 'user'));
}

我在Expenses.home 中的表单:

{!! Form::model($user, ['method' => 'PUT', 'action' => ['HomeController@update', $user->id]]) !!}
    <div class="form-group">
        {!! Form::label('Name', 'Name:') !!}
        {!! Form::text('name', null, ['class' => 'form-control']) !!}
    </div>

    <div class="form-group">
        {!! Form::label('Email', 'Email:') !!}
        {!! Form::text('email', null, ['class' => 'form-control']) !!}
    </div>

    <div class="form-group">
        {!! Form::submit('Update', ['class' => 'btn btn-primary form-control']) !!}
    </div>
{!! Form::close() !!}

我的路线:

Route::resource('home', 'HomeController',  ['only' => ['update']]);

我的 HomeController@update:

public function update($id, UserRequest $request)
{
    $loggedUser = Auth::user();

    $userDB = User::get($id);

    $username = $request->input('name');

    $userDB->name = $username;

    $userDB->update();

    return redirect('home');
}

我做错了什么?

【问题讨论】:

    标签: php forms laravel laravel-5 laravel-facade


    【解决方案1】:

    你必须改变

    `公共函数更新($id, UserRequest $request) { $loggedUser = Auth::user();

    // you are cool to use findOrFail
    $userDB = User::find($id);
    
    $username = $request->input('name');
    
    $userDB->name = $username;
    
    $userDB->update();
    
    return redirect('home');
    

    }`

    您的错误是由 get() 方法引起的,要求您传递要从数据库中检索的列数组

    【讨论】:

      猜你喜欢
      • 2018-04-29
      • 2017-02-04
      • 1970-01-01
      • 2015-08-22
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 2018-06-23
      相关资源
      最近更新 更多