Laravel Update无效,告诉_method未知列

时间:2015-01-27 12:52:39

标签: laravel laravel-4 laravel-5

我是laravel在一个小项目中工作的新手。我有更新我的桌子的问题。

我的编辑字段是

{{ Form::model($participantedit, array('method' => 'PATCH', 'route' => array('dota.update', $participantedit->idparticipant))) }}
    <table border="0">
        <input type="text" name="participant_name" value="<?php echo $participantedit['participant_name']; ?>" />
        <li>{{ Form::submit('Update', array('class' => 'btn btn-info')) }}</li>
{{Form::close()}}

我的更新功能是

public function update($id){
    $input = Input::all();
    return Participant::where('idparticipant', '=', $id)->update($input);
}

我收到列_method未知的错误。

2 个答案:

答案 0 :(得分:4)

问题在于Laravel会自动在表单中添加_method字段。这样做是因为HTML表单不支持PATCH等方法。因此它会发送值为_method的字段patch,以支持除POST和GET之外的其他动词。

您可以使用Input::except()。它将返回所有输入,但在删除指定的输入之前:

$input = Input::except('_method');

您可能还需要排除CSRF令牌:

$input = Input::except('_method', '_token');

或者你可以使用相反的Input::only()

$input = Input::only('foo', 'bar'); // foo and bar are values you actually want

答案 1 :(得分:0)

使用PUT代替PATCH。然后尝试将其放入更新功能

echo "<pre>";
print_r($input);
echo "</pre>";
exit;

看,如果你得到了价值观。如果您正在获取,则将更新结果存储到如下变量中:

$ response = Participant :: where('idparticipant','=',$ id) - &gt; update($ input);

然后再次打印:(查找是否有任何验证错误)

echo "<pre>";
print_r($response->errors());
echo "</pre>";
exit;