【Laravel】テーブルのデータを削除する

前回までの様子はこちら

お次はテーブルのデータを削除する処理を作成します。

まずは、ルーティング。

Route::get('/management/{id}/conform', 'RegisterManagementController@conform');
Route::post('/management/delete', 'RegisterManagementController@delete');

/management/{id}/conformにアクセスすると削除確認の画面が、

/management/deleteにアクセスすると、実際に削除処理を行うようにします。

次は一覧画面に削除確認画面へのリンクを作成します。

                            <td>{{ Html::link('/management/'.$list->id.'/conform', '削除') }}</td>

そして、削除確認画面。

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">削除確認</div>

                <div class="panel-body">
                {!! Form::open(['url' => action('RegisterManagementController@delete')]) !!}
                {!! Form::hidden('id', $item->id) !!}
                <table>
                    <tr>
                        <td>名前</td>
                        <td>{!! $item->name !!}</td>
                    </tr>
                    <tr>
                        <td>住所</td>
                        <td>{!! $item->address !!}</td>
                    </tr>
                    <tr>
                        <td>電話番号</td>
                        <td>{!! $item->phone !!}</td>
                    </tr>
                    <tr>
                        <td>人数</td>
                        <td>{!! $item->num !!}</td>
                    </tr>
                    <tr>
                        <td>宿泊日数</td>
                        <td>{!! $item->days !!}</td>
                    </tr>
                    <tr>
                        <td>宿泊日</td>
                        <td>{!! $item->start_day !!}</td>
                    </tr>
                </table>
                {!! Form::submit('削除') !!}
                {!! Form::close() !!}
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

隠しパラメータにid番号を含め、formをSubmitしたときのパラメータにします。

次に、コントローラー。

    /**
     * 削除確認
     *
     * @return \Illuminate\Http\Response
     */
    public function conform($id)
    {
        return view('register.conform', ['item' => $this->registerManagement->getItemById($id)]);
    }

    /**
     * 削除処理
     */
    public function delete(Request $request)
    {
        $this->registerManagement->deleteById($request->id);
        return redirect('management');
    }

削除確認では、URLのID番号を受け取り、そのIDからデータを参照し、Viewに返しています。

削除処理では、$requestにID番号が入っていますので、そのIDをリポジトリに渡して、削除処理を行ったあと、一覧画面にリダイレクトします。

次はリポジトリ。

    /**
     * 予約を削除する
     * 
     * @return void
     */
    public function deleteById($id)
    {
        $model = $this->getItemById($id);
        $model->delete();
    }

IDでモデルを検索して、delete()メソッドを実行すれば、そのデータはデータベースから削除されます。

これで削除処理が完成しました。

次は、この情報から予約スケジュールを作成する処理を作成していきます。

↑よかったらクリックお願いします。