无法从Laravel中的SQLite表删除

时间:2019-06-27 21:14:25

标签: php laravel sqlite

我正在做“带回家的工作”以进行面试。虽然我有一些Web开发方面的经验,但这不是我的专长。我正在尝试使用HTML DELETE按钮删除SQLite表中的一行。我正在使用Laravel-php框架。

我在Google和Stack Overflow上尝试了不同的解决方案,但似乎没有一个解决问题。我以此Laracasts video

为模型

Link to my code

刀片似乎正在传递正确的信息(来自$ contact-> id的$ id)并且控制器似乎正在接收。但是与ID相关联的给定联系人不会被删除。

刀锋:

null

从控制器:

<div class="col-md-6">
    <table class="table table-striped table-hover">
        <tr>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Address</th>
        </tr>
        @foreach($contacts as $contact)
            <tr>
                <td> {{$contact->f_name}} </td>
                <td> {{$contact->l_name}} </td>
                <td> {{$contact->address}} </td>
                <td>
                    <form method="POST" action="/delete/{{ $contact->id }}">
                        @method('DELETE')
                        @csrf

                        <div class="field">
                            <div class="control">
                                <button type="submit" class="button">Delete Contact</button>
                            </div>
                        </div>

                    </form>
                </td>
            </tr>
        @endforeach
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </table>
</div>

从路线:

public function delete($id) {

  Contact::find($id)->delete();

  return view('index');

}

1 个答案:

答案 0 :(得分:0)

您没有在删除方法上获得ID,需要像

一样将其包含在url中
Route::delete('/delete/{id}', [
  'uses'=>'ContactController@delete',
  'as'=>'contacts.delete'
]);

在这种情况下,您无需更改删除方法。

您还可以在不更改删除路径的情况下从请求对象中检索ID,在这种情况下,您需要将ID作为隐藏输入包括在视图中,并且Delete方法将如下所示

public function delete(Request $request) {

  Contact::find($request->id)->delete();

  return view('index');

}