单击批准按钮后,自动删除旧数据

时间:2017-05-16 04:09:16

标签: laravel

我使用Laravel创建了一个会议室预订系统。所以,我有2个表,这是Auth :: guest预订房间的书,以及Auth :: user批准预订房间的活动。

如果auth :: user为true,我可以列出客人(/ books)的所有预订,在视图中,有一个批准按钮,可以将您带到另一个视图(事件) / create)与(/ books / create)视图具有相同的形式。

当你点击批准按钮时,预订的所有数据都会出现在(events / create)中的表单中,因为我有预订数据的$ id,所以我可以做Book :: findOrfail($ id) ),当点击“申请提交”按钮时,数据将被保存到事件表中。

所以,我的问题是如何在(事件/创建)视图上点击提交按钮后自动删除书表中的预订数据?

有什么想法吗?

在事件控制器上创建事件

 public function create_by_booking($id)
{
    $event = Book::findOrFail($id);
    $event->start_time =  $this->change_date_format_fullcalendar($event->start_time);
    $event->end_time =  $this->change_date_format_fullcalendar($event->end_time);

    $data = [
        'page_title' => 'Add new event',
        'event'         => $event,
        'count'  => Book::count(),
    ];

    return view('event/create', $data);
}

从图书管理员创建图书

 public function create()
{
    $data = [
        'page_title' => 'Book Meeting Room',
        'count'  => Book::count(),
    ];

    return view('book/create', $data);
}

查看列表/书籍

<table class="table table-striped">
                <thead>
                <tr>
                    <th>#</th>
                    <th>Booking's Title</th>
                    <th>Email</th>
                    <th>Room</th>
                    <th>Start</th>
                    <th>End</th>
                    <th></th>
                </tr>
                </thead>
                <tbody>
                <?php $i = 1;?>
                @foreach($books as $book)
                    <tr>
                        <th scope="row">{{ $i++ }}</th>
                        <td><a href="{{ url('books/' . $book->id) }}">{{ $book->title }}</a> <small>by {{ $book->name }}</small></td>
                        <td>{{ $book->email }}</td>
                        <td>{{ $book->room }}</td>
                        <td>{{ date("g:ia\, jS M Y", strtotime($book->start_time)) }}</td>
                        <td>{{date("g:ia\, jS M Y", strtotime($book->end_time)) }}</td>
                        @if (Auth::guest())

                        @else
                        <td>
                            <a class="btn btn-primary btn-xs" href="{{ url('/events/create', $book->id) }}">
                                <span class="glyphicon glyphicon-plus"></span> Add</a>
                            <form action="{{ url('books/' . $book->id) }}" style="display:inline" method="POST">
                                <input type="hidden" name="_method" value="DELETE" />
                                {{ csrf_field() }}
                                <button class="btn btn-danger btn-xs" type="submit"><span class="glyphicon glyphicon-trash"></span></button>
                            </form>

                        </td>
                        @endif
                    </tr>
                @endforeach
                </tbody>
            </table>

谢谢。

2 个答案:

答案 0 :(得分:1)

您已经传递了视图的identifier变量,该变量包含您搜索过的图书的对象,因此我认为您的$event现在有一个$event属性你可以访问。

在您的事件/创建视图中,您可以编辑到store方法的路由以接受ID,如下所示:

id

由于您没有发布<form action="{{ url('/events/store', $data['event']->id) }}" method="POST"> {{ csrf_field() }} <button class="btn btn-danger btn-xs" type="submit"></button> </form> 方法,我认为它会是这样的:

store()

}

答案 1 :(得分:0)

我假设您没有询问Laravel的技术人员如何删除行..

因此,一旦函数(event / create)成功,你应该调用该函数(例如delete_booking($ id))。

但我的建议是,您不需要删除预订数据,而是在该行上设置一个标记,表示预订已经进入下一步。

如果您考虑保存数据库大小,可以批量删除,例如每周一次,以清理预订表。恕我直言,它更有效率,而不是自动逐一进行。