我使用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>
谢谢。
答案 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))。
但我的建议是,您不需要删除预订数据,而是在该行上设置一个标记,表示预订已经进入下一步。
如果您考虑保存数据库大小,可以批量删除,例如每周一次,以清理预订表。恕我直言,它更有效率,而不是自动逐一进行。