在 Laravel 5.4 中单击时使用控制器编辑数据库

Using controller to edit database on click in Laravel 5.4

我试图让一个按钮在被点击时向数据库传递一个查询。我想在控制器中设置此设置,该控制器还存储请求和删除请求。我能够使用 store() 和 destroy() 写入数据库,但是我的 edit() 函数给我带来了路由问题。使用控制器编辑记录的最佳方法是什么?您将如何构建 edit() 函数?或者...我应该使用 Update() 函数吗?我是 Laravel/PHP 初学者,如果可以,请解释您的答案。谢谢!!

概述:该项目是一个员工记录table。我想单击一个按钮来更改员工的雇佣状态。我已经有了添加新员工和删除员工以及使用同一个控制器的按钮。

这是我为页面设置的路由:

Route::resource('employees', 'EmployeeController');

这是按钮的前端表单代码:

$workers = DB::table('employees')->get();

@foreach($workers as $employee)
 {!! Form::open(array(
        'method' => 'edit',
        'route' => [ 'employees.edit', $employee->id]
                    )
                ) 
 !!}

<button type="submit">Release </button>

{!! Form::close() !!}
@endforeach

这是我的存储函数和销毁函数:

public function store(Request $request)
{
    // Confirm Both Fields Are Not Empty
    $this->validate($request, [
    'first_name' => 'required',
    'last_name' => 'required',
    ]);

    //Add a new employee using the request data

    $employee = new Employee;
    $employee->first_name = request('first_name');
    $employee->last_name = request('last_name');
    $employee->position = request('position');
    $employee->salary = request('salary');
    $employee->hire_date = request('hire_date');
    //$employee->attach = request('attach');


    //Save it to the database

    $employee->save();

    //And then redirect back to the Employees page

    return redirect('/employees');
  }


 public function destroy($id)
  {
    $employee = Employee::find($id);

    $destroysignal = $employee->delete();

    if($destroysignal) {
        return redirect('employees');
    }

  }

您不编辑记录,而是更新它们。在您的情况下,您需要在控制器中使用 update() 函数

public function update(Request $request, $id)
{
    $employee = Employee::findOrFail($id);
    $employee->employment_status = true; //or false or whatever your statuses are
    $employee->update();
    return redirect()->back()->with('message', 'Employee updated!');
}

在您的表单中,改用更新路由

{!! Form::model($employee, [
    'method' => 'PATCH', 
    'route' => ['employees.update', $employee->id]]) 
!!}

    <button type="submit">Release </button>

{!! Form::close() !!}

使用资源路由时,'route' => [ 'employees.edit', $employee->id] 最喜欢打开要编辑对象的页面。路由将绑定到控制器的 edit($id) 函数。

也就是说,编辑路径不需要表单。一个简单的锚就可以了

<a href="{{ route('employees.edit', $employee->id) }}">Edit Employee</a>