如何在laravel 5.2中更新数据库表

时间:2016-07-19 08:49:36

标签: php mysqli laravel-5.2

我在laravel 5.2中创建了一个项目。在那" myform.blade.php"页面,创建用于注册用户的表单。注册后,它将以表格格式显示当前用户(" index.blade.php")。在那里,我给了两个动态按钮,如桌子内的下降。一个用于编辑,另一个用于编辑/查看。当我点击删除按钮时,它将通过将主键(employeeID)作为参考ID从数据库中删除相应的行,它正常工作。如果我点击编辑/查看按钮,它将重定向到" edit.blade.php"。在那里我创建了与myform.blade.php相同的表单。如果我们想编辑细节,我们可以从那里编辑。我能够将数据从数据库中提取到我在" edit.blade.php"中创建的表单。但是我不知道如何在不重新插入相同数据的情况下更新数据(这是不可能的,因为它会通过尝试插入重复的主键来创建完整性约束违规。任何人都可以告诉我如何做更新。回复很明显。

" 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

&#34; index.blade.php&#34;是

 @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

&#34; edit.blade.php&#34;是

 @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

&#34; myformController.php&#34;是

  <?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
        }
    }


}

model&#34; myform.php&#34;是

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

1 个答案:

答案 0 :(得分:3)

你想在你的路线中改变这一点:

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>

如果我在前面的回答中提到过,你没有修好你的路线。