我正在为书做一个贷款系统,我有一个配置文件页面,显示你已经拿出的贷款,在每个下面是一个按钮,带你到一个表格,在那里你填写了书的条件,下是另一个按钮,将发送数据到我的数据库中的退货表,我想删除借阅表中的贷款,因为如果没有,然后贷款继续显示在配置文件页面上,用户可以还同一本书,因为他们想要的次数。任何帮助都将不胜感激。谢谢。
profile.blade.php
<?php
use App\Requests;
use App\Loan;
$request = Requests::where('userid', auth()->user()->userid)->get();
?>
@extends('layouts.app')
@section('content')
<div class="container">
<div class="panel panel-default">
<div class="panel-heading"><h1>Profile: {{ Auth::user()->f_name }}</h1></div>
<div class="panel-body">
<div class="container">
<h3>Requests</h3>
@foreach ($request as $request)
<ul>
<h4>Title: {{$request->r_title}}</h4>
<h4>Author: {{$request->r_author}}</h4>
<h4>Year: {{$request->r_year}}</h4>
<h4>Condition: {{$request->r_condition}}</h4>
<br/>
</ul>
@endforeach
</div>
<div class="container">
<h3>Loans</h3>
@foreach ($loan as $loan)
<ul>
<h4>Title: {{$loan->title}}</h4>
<h4>Start Date: {{$loan->startdate}}</h4>
<h4>Due Date: {{$loan->duedate}}</h4>
<br/>
<form action="{{url('returnform/'.$loan->loanid)}}" method="GET">
<input type="submit" name="returnbtn" value="returnform">
</form>
</ul>
@endforeach
</div>
</div>
</div>
</div>
@endsection
returnform.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="panel panel-default">
<div class="panel-heading"><h1>Return Book</h1></div>
<div class="panel-body">
<form action="{{url('returns')}}" method="POST">
{{ csrf_field() }}
<div>
<input type="hidden" name="lid" value="{{$loan->loanid}}" id="lid">
<input type="hidden" name="re_bookid" value="{{$loan->bookid}}" id="re_bookid">
<input type="hidden" name="re_title" value="{{$loan->title}}" id="re_title">
<input type="hidden" name="re_ddate" value="{{$loan->duedate}}" id="re_ddate">
</div>
<div>
<label for="title"><h4>Enter the books condition: </h4></label>
<select name ="re_condition" value="{{old('condition')}}">
<option value="mint">Mint</option>
<option value="good">Good</option>
<option value="fair">Fair</option>
<option value="poor">Poor</option>
</select>
</div>
<input type="submit" name="btn" value="returns">
</form>
</div>
</div>
</div>
@endsection
BookController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Book;
use App\Returns;
use App\Requests;
use App\Loan;
use Carbon\Carbon;
class BookController extends Controller
{
......
function returnform($loanid)
{
$loan = Loan::find($loanid);
return view('book/returnform',['loan' => $loan]);
}
function returns(Request $request, $loanid)
{
$return = new Returns();
$return->userid = auth()->user()->userid;
$return->f_name = auth()->user()->f_name;
$return->l_name = auth()->user()->l_name;
$return->bookid = $request->re_bookid;
$return->title=$request->re_title;
$return->condition=$request->re_condition;
$return->returndate= Carbon::now();
$return->duedate=$request->re_ddate;
$return->save();
return redirect('profile');
}
路线
....
Route::get('returnform/{loanid}', 'BookController@returnform');
Route::post('returns', 'BookController@returns');
发布于 2017-05-20 16:52:06
要删除表中的行,请使用以下代码
function deletereturns(Request $request, $loanid) {
$return = Return::find($loanid);
$return->delete();
// return to some place
}
添加一条路由,就完成了。
但我建议您使用boolean在表中创建一个新列,并将其设置为default false。
每次用户尝试删除贷款时,只需将false更改为true。
列出贷款时,使用where条件排除所有已删除的贷款。
这可以帮助你知道是谁删除了所有的贷款,这可能会有任何帮助
发布于 2017-05-20 17:16:42
$loanid
参数在您的方法中不起作用,因为您没有向它传递任何值。但是,您要在隐藏的表单字段中设置贷款id。因此,这样做可以删除使用贷款id的贷款。
Loan::destroy($request->lid);
当用户还书时,您还应该添加一些检查。检查具有贷款id的贷款是否存在,并执行检查以查看登录的用户和被贷款的用户是否匹配。因为现在使用您的代码,任何用户都可以归还由任何其他用户借出的书籍。
https://stackoverflow.com/questions/44088312
复制