簡體   English   中英

如何在laravel 5.2中更新數據庫表

[英]How to update a database table in laravel 5.2

我在laravel 5.2中創建了一個項目。 在該“ myform.blade.php”頁面中,創建了用於注冊用戶的表單。 注冊后,它將以表格格式(“ index.blade.php”)顯示當前用戶。 在那里,我給了兩個動態按鈕,就像桌子內的桌子。 一個用於編輯,另一個用於編輯/查看。 當我單擊刪除按鈕時,它將以主鍵(employeeID)作為參考ID從數據庫中刪除相應的行,它工作正常。 如果我單擊“編輯/查看”按鈕,它將重定向到“ edit.blade.php”。 在那里,我創建了與myform.blade.php中相同的表單。 如果要編輯詳細信息,可以從那里進行編輯。 我可以從數據庫中獲取數據到在“ edit.blade.php”中創建的表單。 但是我不知道如何在不再次插入相同數據的情況下從其更新數據(這是不可能的,因為它會通過嘗試插入重復的主鍵來創建違反Integrity約束的行為。任何人都可以告訴我如何進行更新答復是可觀的。

“ myform.blade.php”是

  @extends('app')

@section('content')

    <div class="templatemo-content-wrapper">
        <div class="container">
            <ol class="breadcrumb">
                <li><a href="{{ url("/") }}"><font color="green">Home</font></a></li>
                <li class="active">Employee Form</li>
            </ol>
            <div class="row">
                <div class="col-md-8 col-md-offset-2">
                    <div class="panel panel-success">
                        <div class="panel-heading">Employee Form</div>
                        <div class="panel-body">
                            @if (count($errors) > 0)
                                <div class="alert alert-danger">
                                    <strong>Whoops!</strong> There were some problems with your input.<br><br>
                                    <ul>
                                        @foreach ($errors->all() as $error)
                                            <li>{{ $error }}</li>
                                        @endforeach
                                    </ul>
                                </div>
                            @endif

                            <form class="form-horizontal" role="form" method="POST" action="{{ url('myform/myform/') }}">
                                <input type="hidden" name="_token" value="{{ csrf_token() }}">

                                <div class="form-group">
                                    <label class="col-md-4 control-label">Employee ID</label>
                                    <div class="col-md-6">
                                        <input type="text" class="form-control" name="employeeID" value="{{ old('employeeID') }}" placeholder="Enter employee ID">
                                    </div>
                                </div>


                                <div class="form-group">
                                    <label class="col-md-4 control-label">E_number</label>
                                    <div class="col-md-6">
                                        <input type="text" class="form-control" name="employeeNo" value="{{ old('employeeNo') }}" placeholder="Enter employee number">
                                    </div>
                                </div>

                                <div class="form-group">
                                    <label class="col-md-4 control-label">Name</label>
                                    <div class="col-md-6">
                                        <input type="text" class="form-control" name="Cname" value="{{ old('Cname') }}" placeholder="Enter Contact Name">
                                    </div>
                                </div>

                                <div class="form-group">
                                    <label class="col-md-4 control-label">DOB</label>
                                    <div class="col-md-6">
                                        <input type="date" class="form-control" name="dob" value="{{ old('dob') }}" placeholder="Enter date of birth">
                                    </div>
                                </div>

                                <div class="form-group">
                                    <label class="col-md-4 control-label">Contact Phone</label>
                                    <div class="col-md-6">
                                        <input type="text" class="form-control" name="phoneNumber" value="{{ old('phoneNumber') }}" placeholder="Enter Mobile Number">
                                    </div>
                                </div>



                                <div class="form-group">
                                    <label class="col-md-4 control-label">Address</label>
                                    <div class="col-md-6">
                                        <input type="text" class="form-control" name="address" value="{{ old('address') }}" placeholder="Enter Address">
                                    </div>
                                </div>

                                <div class="form-group">
                                    <div class="col-md-6 col-md-offset-4">
                                        <button type="submit" class="btn btn-warning">
                                            Save
                                        </button>
                                    </div>
                                </div>

                                <a href="{{ url('myform/index') }}">view Data</a>

                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>


@endsection

“ index.blade.php”是

 @extends('app')

@section('content')


    <div class="templatemo-content-wrapper" xmlns="http://www.w3.org/1999/html">
        <ol class="breadcrumb">
            <li><a href="{{ url("/") }}"><font color="green">Home</font></a></li>
            <li class="active">user information</li>
        </ol>
        <div class="templatemo-content">

            <h1>View/Edit user information</h1>

            <div>
                <div>
                    <div>

                        <table id="example" class="table table-striped table-hover table-bordered" bgcolor="#fff8dc">
                            <thead>
                            <tr>
                                <th>Employee ID</th>
                                <th>Employee No</th>
                                <th>Contact Name</th>
                                <th>Date of birth</th>
                                <th>Mobile number</th>
                                <th>address</th>

                            </tr>
                            </thead>
                            <tbody>

                            {{--{{ UserController::getIndex() }}--}}
                            @foreach($employer as $emp)
                                <tr>
                                    <td>{{ $emp->employeeID }}</td>
                                    <td>{{ $emp->employeeNo }}</td>
                                    <td>{{ $emp->Cname }}</td>
                                    <td>{{ $emp->dob }}</td>
                                    <td>{{ $emp->phoneNumber }}</td>
                                    <td>{{ $emp->address }}</td>


                                    <td>
                                        {{--@if ( in_array($nam->isActive, array('Yes','No')) )--}}

                                        <div class="btn-group">
                                            <button type="button" class="btn btn-info">Action</button>
                                            <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown">
                                                <span class="caret"></span>
                                                <span class="sr-only">Toggle Dropdown</span>
                                            </button>
                                            <ul class="dropdown-menu" role="menu">
                                                {{--@if ($nam->isActive == 'Yes')--}}
                                                <li data-toggle="modal" data-target="#acceptModal" data-bookingid="{{ $emp->employeeID }}"><a href="{{ url('myform/edit/'.$emp->employeeID) }}">View/ Edit</a>
                                                </li>
                                                {{--@endif--}}
                                                <li><a href="{{ url('/myform/delete/'.$emp->employeeID)}}">Delete</a></li>
                                            </ul>
                                        </div>
                                        {{--@endif--}}
                                    </td>
                                </tr>
                            @endforeach
                            </tbody>
                        </table>
                        {{$employer->links()}}
                    </div>
                </div>
            </div>
        </div>
    </div>


    {{--<a href="{{ url('user/add') }}"> <input type="submit" id="add" name="add" value="Edit" class="button"></a>--}}

    </br>




    <h4>Create a new Employee</h4>
    {{--<form class="templatemo-preferences-form" role="form" method="POST" action="{{ action('UserController@save') }}">--}}
    {{--<input type="hidden" name="_token" value="{{ csrf_token() }}">--}}

    <form role="form" method="POST" action="{{ url('myform/index') }}">
        <input type="hidden" name="_token" value="{{ csrf_token() }}">


        <div class="row">
            <div class="col-md-6 margin-bottom-15">

                <input type="text" class="form-control" name="employeeID" value="{{ old('employeeID') }}" placeholder="Enter employee ID">
            </div>
            <div class="row templatemo-form-buttons">
                <div class="submit-button">
                    <button type="submit" class="btn btn-primary">New</button>

                </div>
            </div>
        </div>
    </form>
    {{--</form>--}}


    <script type="text/javascript">
        $(document).ready(function() {
            $('#example').dataTable();
        } );
    </script>


@endsection

“ edit.blade.php”是

 @extends('app')

@section('content')

    <div class="templatemo-content-wrapper">
        <div class="container">
            <ol class="breadcrumb">
                <li><a href="{{ url("/") }}"><font color="green">Home</font></a></li>
                <li class="active">Employee Form</li>
            </ol>
            <div class="row">
                <div class="col-md-8 col-md-offset-2">
                    <div class="panel panel-success">
                        <div class="panel-heading">Employee Form</div>
                        <div class="panel-body">
                            @if (count($errors) > 0)
                                <div class="alert alert-danger">
                                    <strong>Whoops!</strong> There were some problems with your input.<br><br>
                                    <ul>
                                        @foreach ($errors->all() as $error)
                                            <li>{{ $error }}</li>
                                        @endforeach
                                    </ul>
                                </div>
                            @endif

                            <form class="form-horizontal" role="form" method="POST" action="{{ url('myform/myform/') }}">
                                <input type="hidden" name="_token" value="{{ csrf_token() }}">
@foreach($user as $use)
                                <div class="form-group">
                                    <label class="col-md-4 control-label">Employee ID</label>
                                    <div class="col-md-6">
                                        <input type="text" class="form-control" name="employeeID" value="{{ $use->employeeID }}" placeholder="Enter employee ID">
                                    </div>
                                </div>


                                <div class="form-group">
                                    <label class="col-md-4 control-label">E_number</label>
                                    <div class="col-md-6">
                                        <input type="text" class="form-control" name="employeeNo" value="{{ $use->employeeNo}}" placeholder="Enter employee number">
                                    </div>
                                </div>

                                <div class="form-group">
                                    <label class="col-md-4 control-label">Name</label>
                                    <div class="col-md-6">
                                        <input type="text" class="form-control" name="Cname" value="{{ $use->Cname }}" placeholder="Enter Contact Name">
                                    </div>
                                </div>

                                <div class="form-group">
                                    <label class="col-md-4 control-label">DOB</label>
                                    <div class="col-md-6">
                                        <input type="date" class="form-control" name="dob" value="{{ $use->dob }}" placeholder="Enter date of birth">
                                    </div>
                                </div>

                                <div class="form-group">
                                    <label class="col-md-4 control-label">Contact Phone</label>
                                    <div class="col-md-6">
                                        <input type="text" class="form-control" name="phoneNumber" value="{{ $use->phoneNumber }}" placeholder="Enter Mobile Number">
                                    </div>
                                </div>



                                <div class="form-group">
                                    <label class="col-md-4 control-label">Address</label>
                                    <div class="col-md-6">
                                        <input type="text" class="form-control" name="address" value="{{ $use->address }}" placeholder="Enter Address">
                                    </div>
                                </div>

                                <div class="form-group">
                                    <div class="col-md-6 col-md-offset-4">
                                        <button type="submit" class="btn btn-warning"><a href="{{ url('myform/update/'.$use->employeeID) }}">
                                            Update</a>
                                        </button>
                                    </div>
                                </div>

                                {{--<a href="{{ url('myform/index') }}"> <input type="button" id="add" name="add" value="View data" class="button"></a>--}}

    @endforeach
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
@endsection

“ myformController.php”是

  <?php


namespace App\Http\Controllers;

use App\myform;
use Mail;
use Illuminate\Support\Facades\DB;
use Faker\Provider\DateTime;
use App\User;
use App\Http\Requests\createUserRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Input;
use Symfony\Component\HttpFoundation\Request;

class myformController extends Controller
{
    public $type = 'myform';


    public function getIndex()
    {
//        $user = DB::table('user')->get();
        $employer = DB::table('employee')->simplePaginate(5);
        return view('myform.index')->with('employer',$employer);
    }


    public function formInsert()
    {
        $postform = Input::all();
        //insert data into mysql table
        $data =      array('employeeID'=> $postform['employeeID'],
            'employeeNo'=> $postform['employeeNo'],
            'Cname'=> $postform['Cname'],
            'dob'=> $postform['dob'],
            'phoneNumber'=> $postform['phoneNumber'],
            'address'=> $postform['address'],


        );
        //  echo print_r($data);
        $ck = 0;
        $ck = DB::table('employee')->Insert($data);
        //echo "Record Added Successfully!";
        $employer = DB::table('employee')->simplePaginate(10);
        return view('myform.index')->with('employer',$employer);


    }

    public function delete($id)
    {
        DB::table('employee')->where('employeeID', '=', $id)->delete();
        $employer = DB::table('employee')->simplePaginate(10);
        return view('myform.index')->with('employer', $employer);
    }

    public function formIDinsert()
    {
        $postform = Input::all();
        //insert data into mysql table
        $data =      array('employeeID'=> $postform['employeeID'],

        );
        //  echo print_r($data);
        $ck = 0;
        $ck = DB::table('employee')->Insert($data);
        //echo "Record Added Successfully!";
        $employer = DB::table('employee')->simplePaginate(10);
        return view('myform.index')->with('employer',$employer);


    }

    public function edit($id)
    {
        try {
            //Find the user object from model if it exists
          $user=DB::table('employee')->where('employeeID', '=', $id)->get();
            //$user = User::findOrFail($id);
            //Redirect to edit user form with the user info found above.
          return view('myform.edit')->with ('user', $user);

            //return view('myform.edit')->with('user', myform::find($id));
        } catch (ModelNotFoundException $err) {
            //redirect to your error page
        }
    }

    // Update user
    public function update(Request $request, $id)
    {
        try{
            //Find the user object from model if it exists
            $user= myform::findOrFail($id);
            DB::table('employee')
                ->where('employeeID', $id)
                ->update(['employeeNo' =>$request['employeeNo'],
                'Cname'=>$request['Cname'],
                'phoneNumber'=>$request['phoneNumber'],
                'address'=>$request['address']
                ]);
            //Set user object attributes
            //the $request index should match your form field ids!!!!!
            //you can exclude any field you want.

//            $user->employeeNo = $request['employeeNo'];
//            $user->Cname = $request['Cname'];
//            $user->phoneNumber = $request['phoneNumber'];
//            $user->address = $request['address'];

            //Save/update user.
            $user->save();
            return view('myform.index')->with('user', $user);
            //redirect to somewhere
        }
        catch(ModelNotFoundException $err){
            //Show error page
        }
    }


}

模型“ myform.php”是

   <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class myform extends Model
{

    protected $table = 'employee';
    //protected $primaryKey = 'employeeID';
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'employeeID',
        'employeeNo',
        'Cname',
        'dob',
        'phoneNumber',
        'address',

    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

Routes.php是

    Route::any('myform', function()
{
    return view('myform/myform');
});

Route::any('myform/myform', 'myformController@formInsert');
Route::any('myform/index', 'myformController@getIndex');
//to show edit form and fetch passed user id info from db
Route::get('myform/edit/{id}', 'myformController@edit');

//to get the edited info and save it to db
Route::get('myform/update/{id}', 'UserController@update');
Route::any('myform/index', 'myformController@formIDinsert');
Route::any('myform/delete/{id}', 'myformController@delete');

您想更改您的路線:

Route::get('myform/update/{id}', 'UserController@update');

//Because the data in your form is transferred/submitted by post request
Route::post('myform/update/{id}', 'UserController@update');

然后將您的更新功能更改為此

// Update user
public function update(Request $request, $id)
{
    try{
        //Find the user object from model if it exists
        $user= myform::findOrFail($id);

        //$request contain your post data sent from your edit from
        //$user is an object which contains the column names of your table

        //Set user object attributes
        $user->employeeNo = $request['employeeNo'];
        $user->Cname = $request['Cname'];
        $user->dob = $request['dob'];
        $user->phoneNumber = $request['phoneNumber'];
        $user->address = $request['address'];

        // Save/update user. 
        // This will will update your the row in ur db.
        $user->save();

        return view('myform.index')->with('user', $user);
    }
    catch(ModelNotFoundException $err){
        //Show error page
    }
}

如果您有任何疑問或需要澄清,歡迎您提出:)

在您的編輯視圖中更新

改變這個

<form class="form-horizontal" role="form" method="POST" action="{{ url('myform/myform/') }}">

<form class="form-horizontal" role="form" method="POST" action="{{ url('myform/update/').$user->employeeID}}">

$user->employeeID更改為您的主鍵。

也改變這個

<button type="submit" class="btn btn-warning"><a href="{{ url('myform/update/'.$use->employeeID) }}">
                                        Update</a>
                                    </button>

對此

<button type="submit" class="btn btn-warning">Update</button>

麻生太郎沒有像我在此答案前面提到的那樣修復路線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM