返回书后删除数据库中的贷款行

时间:2017-05-20 16:28:54

标签: php laravel

我正在建立一个书籍贷款系统,我有一个个人资料页面,显示你已经拿出的贷款,每个下面都是一个按钮,带你到一个表格,你填写书的条件,在是另一个将数据发送到我的数据库中的返回表的按钮,我想删除贷款表中的贷款,因为如果没有,那么贷款将继续显示在配置文件页面中,并且用户可以多次返回同一本书他们要。任何帮助将不胜感激。 感谢。

profile.blade.php

    for(int i=0; i<20; i++){
    btn1[i] = new JButton(String.valueOf(i+1));
    btn1[i].setPreferredSize(new Dimension(60, 30));
    btn1[i].setBackground(Color.green);
    panel.add(btn1[i]);

}

returnform.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

BookController.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

路由

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');
}

2 个答案:

答案 0 :(得分:0)

要删除表格中的行,请使用以下代码

function deletereturns(Request $request, $loanid) {
    $return = Return::find($loanid); 
    $return->delete(); 
    // return to some place
}

添加路线及其完成。

但我建议您使用boolean在表中创建一个新列,并设置默认值false。
每次用户尝试删除贷款时,只需将false更改为true即可。
当您列出贷款时,请使用where条件排除所有已删除的贷款。

这可以帮助您了解谁删除了所有贷款,这可能会有所帮助

答案 1 :(得分:0)

$loanid参数在您的方法中不起作用,因为您没有向其传递任何值。但是,您在隐藏的表单字段中设置贷款ID。这样做是为了使用贷款ID删除贷款。

Loan::destroy($request->lid);

您还应该在用户退回图书时添加一些检查。检查具有贷款ID的贷款是否存在,并检查登录用户和借出的用户是否匹配。因为现在使用您的代码,任何用户都可以返回由任何其他用户借出的图书。