【问题标题】:Unable to delete the row, upon clicking the delete button in laravel/mysql单击 laravel/mysql 中的删除按钮后,无法删除该行
【发布时间】:2019-07-25 08:10:32
【问题描述】:

我一直在研究一个在“https://laravel.com/docs/5.1/quickstart”中给出的示例。单击删除按钮后,我无法删除该行!

Web/Route.php

Route::get('/', 'TaskDisplayController@taskdisplay');

Route::post('/taskdisplay', function () {
    return view('/taskdisplay');
});
Route::get('/taskdisplay', function () {
    return view('/taskdisplay');
});

Route::post('/tasklistdisplay', 'TaskDisplayController@tasklistdisplay');
Route::get('/tasklistdisplay', 'TaskDisplayController@tasklistdisplay');

Route::post('/TaskDisplay', 'TaskDisplayController@taskdisplay');
Route::get('/TaskDisplay', 'TaskDisplayController@taskdisplay');

Route::delete('/tasklistdisplay/{id}', function ($id) {
    DB::table('tasktable')->findOrFail($id)->delete();

    return redirect('/');
});

TaskDisplayController.php

class TaskDisplayController extends BaseController
{
    public function taskdisplay()
    {
        $task_ = DB::table('tasktable')->select('task','taskid','id')->get();
        return view('taskdisplay',['task'=> $task_]);
    }

    public function tasklistdisplay(Request $req)
    {
        $task_=$req->input('taskfield');
        if(DB::insert('insert into tasktable (id, task) values (1, ?)',[$task_]))
        {
            return redirect('/TaskDisplay');
        }
        else
        {
            echo "Login failed; Wrong data entered";
        }
    }
}

taskdisplay.blade.php

<table>
<thead>
    <tr>
        <th>Task ID</th>
        <th>User ID</th>
        <th>Task</th>
        <th>Options</th>             
    </tr>
</thead>
<tbody>
    <tr>
        @foreach($task as  $tsk)
            <td>{{$tsk->taskid }}</td>
            <td>{{$tsk->id }}</td>
            <td>{{$tsk->task }}</td>
            <td>
            <form action="/task/{{ $tsk->id }}" method="post" >
                {{ csrf_field() }}
                {{ method_field('DELETE') }}
                <button>Delete Task</button>
            </form>
            </td>
            </tr>
            @endforeach
<input type="hidden" value={{csrf_token()}} name=_token>
</tbody>        
</table>

期望它像 :https://laravel.com/docs/5.1/quickstart 一样工作 但是点击删除按钮后显示404 page not found

【问题讨论】:

    标签: php html mysql laravel


    【解决方案1】:

    调整动作路线如下图:

    action="/tasklistdisplay/{{ $tsk->id }}"
    

    findOrFail 是一个雄辩的函数而不是Query Builder。所以应该是:

    DB::table('tasktable')->whereId($id)->delete();
    

    【讨论】:

    • 工作得很好,最简单也是最好的答案:)
    • @SYEDSHEHROZSOHAIL 所以这应该是公认的答案,不是吗?
    • 如果我想根据taskid而不是id删除,我应该怎么做?
    • 如果您使用任何其他列而不是id,您可以这样做DB::table('tasktable')-&gt;where('taskid', $taskId)-&gt;delete(); 我希望您的问题正确。
    【解决方案2】:

    我假设您要前往的路线是 tasklistdisplay(因为这是您显示的唯一 delete 路线),但是,在您的表单中,您已将操作设置为 @ 987654323@.

    尝试将操作更改为:

    action="/tasklistdisplay/{{ $tsk->id }}"
    

    【讨论】:

      【解决方案3】:

      请以以下形式修正您的帖子网址: 你的路线是:

      Route::delete('/tasklistdisplay/{id}'
      

      但你的表格是:

       <form action="/task/{{ $tsk->id }}" method="post" >
      

      应该是:

      <form action="/tasklistdisplay/{{ $tsk->id }}" method="post" >
      

      【讨论】:

      • 哦,是的!谢谢你
      【解决方案4】:

      点击转到 404,因为您的 web/route.php 中没有 DELETE 路由。

      您正在调用的删除路由在form 标签的action 属性中定义。

      这条路线

      Route::delete('/tasklistdisplay/{id}', function ($id) {
          DB::table('tasktable')->findOrFail($id)->delete();
          return redirect('/');
      });
      

      应该是

      Route::delete('/task/{id}', function ($id) {
          DB::table('tasktable')->findOrFail($id)->delete();
          return redirect('/');
      });
      

      【讨论】:

      • 如果我想根据taskid而不是id删除,我应该怎么做?
      【解决方案5】:

      DB::table('tasktable')-&gt;delete(1) 这会有所帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-04
        • 2012-07-18
        • 1970-01-01
        • 2016-04-21
        • 2023-03-15
        • 2023-01-05
        相关资源
        最近更新 更多