laravel的更新语句不起作用

时间:2019-01-22 14:58:53

标签: php laravel eloquent

我有两个按钮:1-在数据库中插入数据,2-更新第一行...我试图从数据库更新第一行,但该功能无法正常工作。

我的按钮:

<form action="{{action('CashierController@openCashier')}}" method="post">
    @csrf
    <button type="submit" class="btn btn-primary" style="margin-top: 10px">Iniciar Caixa</button>
</form>

<form action="{{action('CashierController@closeCashier')}}" method="put">
    @csrf
    <button type="submit" class="btn btn-danger" style="margin-top: 10px">Fechar Caixa</button>
</form>

我的BD:

enter image description here

CashierController:

 public function openCashier(){

    $date = date('d-m-Y H:i');
    $status = 1;

    DB::table('cashier')->insert([
        'start' => DB::raw('INET_ATON(\''.$date.'\')'),
        'status' => DB::raw('INET_ATON(\''.$status.'\')'),
    ]);

    return redirect()->to('admin/cashier')
        ->with('date', $date)
        ->with('status', $status);

}

public function closeCashier(){

    $date = date('d-m-Y H:i');
    $status = 0;

    DB::table('cashier')->orderBy('id','desc')->first()
        ->update(array('status'=>$status, 'last'=>$date));

    return redirect()->to('admin/cashier')
    ->with('date', $date)
    ->with('status', $status);
}

路线:

//================================Cashier=================================//
Route::get('/admin/cashier', 'CashierController@index');
Route::post('/admin/cashier', 'CashierController@openCashier');
Route::put('/admin/cashier', 'CashierController@closeCashier');

我的代码有问题吗?我看不到

1 个答案:

答案 0 :(得分:2)

来自Laravel的documentation

  

HTML表单不支持PUT,PATCH或DELETE操作。所以,当   定义从HTML调用的PUT,PATCH或DELETE路由   表单,则需要向表单添加一个隐藏的_method字段。的   _method字段发送的值将用作HTTP请求   方法:

此更新实际上是使用PUT。您需要在表单中欺骗该方法。

<form action="{{action('CashierController@closeCashier')}}" method="POST">
    @csrf
    @method('PUT')
    <button type="submit" class="btn btn-danger" style="margin-top: 10px">Fechar Caixa</button>
</form>