如何通过Laravel 5.2一次更新特定的列数据?

时间:2017-09-19 05:12:55

标签: php laravel laravel-5.2

我有一个users表,其中column名为rank_id。现在,我想要将所有用户rank_id一次更新为2,其中rank_id = 6一次(点击一个按钮)。我怎样才能做到这一点?到目前为止我已尝试过:

路线:

Route::post('/test/rankup2', array('as' => 'user.rank2.post', 'uses' => 'TestController@RankUpgradeTwo'));

TestController.php:

function RankUpgradeTwo(Request $request)
{
    $memberAll = User::where('rank_id','=',6)->firstOrFail();
    //dd($memberAll);

    $memberAll->rank_id = '2';

    $memberAll->save();
    return Redirect::to('user/test')->with('message', 'Successfully Ugraded into Rank 2');

}

testScript.blade.php:

    <form method="POST"
        action="{{ route('user.rank2.post') }}"
        class="form-horizontal stdform"
        autocomplete="off"
        enctype="multipart/form-data"
        id="edit-form"
        role="form"
        {{--v-on:submit="submitChange" --}}
        novalidate />
    {{ csrf_field() }}


<div class="control-group action">


    <button type="submit" name="submit" value="submit" id="submit" class="btn btn-blue btn-left">
       Rank Up 2
    </button>       

</div>

{{ Form::close() }}

这显示了我成功的消息,但我没有看到数据库中的任何更新。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试Eloquent Update

User::where('rank_id','=',6)->update(['rank_id' => 2]);

由于firstOrFail只会从数据库中获取第一条记录,因此您将无法更新所有记录,但是还有另一种方法可以解决该问题。

$memberAll = User::where('rank_id','=',6)->get();
foreach($memberAll as $member) {
    $member->rank_id = 2;
    $member->save();
}