Php 在laravel中更新数据时显示错误的唯一密钥验证

Php 在laravel中更新数据时显示错误的唯一密钥验证,php,validation,laravel-4,laravel-routing,Php,Validation,Laravel 4,Laravel Routing,您好,我正在使用laravel创建一个应用程序,我有一个模型,其中asset_number字段是唯一的,验证规则如下 模型 这是我创建和编辑的控制器代码 控制器 My Route.php 现在的问题是,每当我尝试更新我的表单时,“我的资产编号”字段都会引发错误:资产编号已被获取。在更新表单时,如何在控制器中传递id,以便仅在使用现有资产编号时,而不是在编辑具有当前资产编号的表单时,它才会引发错误 我尝试了以下方法,但没有成功 模型 控制器 嗨,我自己终于找到了一个可行的解决方案,这就是我所做的,

您好,我正在使用laravel创建一个应用程序,我有一个模型,其中asset_number字段是唯一的,验证规则如下

模型

这是我创建和编辑的控制器代码

控制器

My Route.php

现在的问题是,每当我尝试更新我的表单时,“我的资产编号”字段都会引发错误:资产编号已被获取。在更新表单时,如何在控制器中传递id,以便仅在使用现有资产编号时,而不是在编辑具有当前资产编号的表单时,它才会引发错误

我尝试了以下方法,但没有成功

模型

控制器


嗨,我自己终于找到了一个可行的解决方案,这就是我所做的,请看一看

控制器


@Kyslik用粗体字母更新了我的问题,请看一看Hello,请看这个答案@Kyslik我试过了,但仍然存在相同的错误…还有其他解决方案吗
protected $rules = array
        (

            'asset_number'              => 'required|alpha_dash|min:2|max:12|unique:asset_details,asset_number,{id}',
            'asset_name'                => 'alpha_space',
            'asset_type_id'             => 'required',
            'shift'                     => 'required',

        );
public function postCreate()
    {

        // get the POST data
        $new = Input::all();

        // create a new Assetdetail instance
        $assetdetail = new Assetdetail();

        // attempt validation
        if ($assetdetail->validate($new))
        {

            // Save the location data
            $assetdetail ->asset_number             = e(Input::get('asset_number'));
            $assetdetail ->asset_name               = e(Input::get('asset_name'));
            $assetdetail ->asset_type_id            = e(Input::get('asset_type_id'));
            $assetdetail ->shift                    = e(Input::get('shift'));

            // Was the asset created?
            if($assetdetail ->save())
            {
                // Redirect to the new location  page
                return Redirect::to("admin/settings/assetdetails")->with('success', Lang::get('admin/assetdetails/message.create.success'));
            }
        }
        else
        {
            // failure
            $errors = $assetdetail->errors();
            return Redirect::back()->withInput()->withErrors($errors);
        }

        // Redirect to the location create page
        return Redirect::to('admin/settings/assetdetails/create')->with('error', Lang::get('admin/assetdetails/message.create.error'));

    }


    public function getEdit($assetdetailId = null)
    {
        // Check if the location exists
        if (is_null($assetdetail = Assetdetail::find($assetdetailId)))
        {
            // Redirect to the blogs management page
            return Redirect::to('admin/settings/assetdetails')->with('error', Lang::get('admin/assetdetails/message.does_not_exist'));
        }

        //$assetlife = DB::table('asset_details')->where('id', '=', $assetdetailId)->lists('asset_life');
        $location_list = array('' => '') + Location::lists('name', 'id');
        $assettype_list = array('' => '') + Assettype::lists('asset_type', 'id');
        $assignTo_list = array('' => 'Select a User') + User::select(DB::raw('CONCAT(first_name, " ", last_name) AS full_name'), 'id') ->lists('full_name', 'id');

        $assetdetail_options = array('' => 'Top Level') + DB::table('asset_details')->where('id', '!=', $assetdetailId)->lists('asset_number', 'id');

        return View::make('backend/assetdetails/edit', compact('assetdetail'))->with('assetdetail_options',$assetdetail_options)->with('location_list',$location_list)->with('assettype_list',$assettype_list)->with('assignTo_list',$assignTo_list);

    }


    public function postEdit($assetdetailId = null)
    {
        // Check if the location exists
        if (is_null($assetdetail = Assetdetail::find($assetdetailId)))
        {
            // Redirect to the blogs management page
            return Redirect::to('admin/settings/assetdetails')->with('error', Lang::get('admin/assetdetails/message.does_not_exist'));
        }

        $new = Input::all();

        /*if ($assetdetail ->asset_number   == Input::old('asset_number') && 
        {
          $assetdetail ->asset_number = e(Input::get('asset_number'));
        }*/

        if ($assetdetail->validate($new))
        {

            // Update the asset data
            $assetdetail ->asset_number             = e(Input::get('asset_number'));
            $assetdetail ->asset_name               = e(Input::get('asset_name'));
            $assetdetail ->asset_type_id            = e(Input::get('asset_type_id'));
            $assetdetail ->shift                    = e(Input::get('shift'));


            // Was the asset created?
            if($assetdetail->save())
            {
                // Redirect to the saved location page
                return Redirect::to("admin/settings/assetdetails/$assetdetailId/edit")->with('success', Lang::get('admin/assetdetails/message.update.success'));
            }
        }

            else
            {
            // failure
            $errors = $assetdetail->errors();
            return Redirect::back()->withInput()->withErrors($errors);
            }


        // Redirect to the asset management page with error
        return Redirect::to("admin/settings/assetdetails/$assetdetailId/edit")->with('error', Lang::get('admin/assetdetails/message.update.error'));

    }
Route::post('create', array('as' => 'savenew/assetdetail','uses' => 'Controllers\Admin\AssetdetailsController@postCreate'));
            Route::get('{assetdetailId}/edit', array('as' => 'update/assetdetail', 'uses' => 'Controllers\Admin\AssetdetailsController@getEdit'));
            Route::post('{assetdetailId}/edit', 'Controllers\Admin\AssetdetailsController@postEdit');
'asset_number' => 'mobileNumber' => 'required|min:5|numeric|unique:asset_details,asset_number,' . $id
Assetdetail::$rules['mobileNumber'] = 'required|min:5|numeric|unique:asset_details,asset_number,' . $id
class AssetdetailsController extends AdminController 
 {

     protected $validationRules = array
        (   
            'asset_number'              => 'required|alpha_dash|min:2|max:12|unique:asset_details,asset_number',
            'asset_name'                => 'alpha_space',
            'asset_type_id'             => 'required',
            'shift'                     => 'required',
        );

    public function postCreate()
    {

        $validator = Validator::make(Input::all(), $this->validationRules);

        // If validation fails, we'll exit the operation now.
        if ($validator->fails())
        {
            // Ooops.. something went wrong
            return Redirect::back()->withInput()->withErrors($validator);
        }

        // attempt validation
        else
        {

            $assetdetail ->asset_number             = e(Input::get('asset_number'));
            $assetdetail ->asset_name               = e(Input::get('asset_name'));
            $assetdetail ->asset_type_id            = e(Input::get('asset_type_id'));
            $assetdetail ->shift                    = e(Input::get('shift'));

            // Was the asset created?
            if($assetdetail ->save())
            {
                // Redirect to the new location  page
                return Redirect::to("admin/settings/assetdetails")->with('success', Lang::get('admin/assetdetails/message.create.success'));
            }
        }


        // Redirect to the location create page
        return Redirect::to('admin/settings/assetdetails/create')->with('error', Lang::get('admin/assetdetails/message.create.error'));

    }

    public function postEdit($assetdetailId = null)
    {
        // Check if the location exists
        if (is_null($assetdetail = Assetdetail::find($assetdetailId)))
        {
            // Redirect to the blogs management page
            return Redirect::to('admin/settings/assetdetails')->with('error', Lang::get('admin/assetdetails/message.assetdetail_not_exist'));
        }

        $this->validationRules['asset_number'] = "required|alpha_dash|min:2|max:12|unique:asset_details,asset_number,{$assetdetail->asset_number},asset_number";

        $validator = Validator::make(Input::all(), $this->validationRules);


        // If validation fails, we'll exit the operation now.
        if ($validator->fails())
        {
            // Ooops.. something went wrong
            return Redirect::back()->withInput()->withErrors($validator);
        }

        else
        {
            $assetdetail ->asset_number             = e(Input::get('asset_number'));
            $assetdetail ->asset_name               = e(Input::get('asset_name'));
            $assetdetail ->asset_type_id            = e(Input::get('asset_type_id'));
            $assetdetail ->shift                    = e(Input::get('shift'));

            if($assetdetail->save())
            {
                // Redirect to the saved location page
                return Redirect::to("admin/settings/assetdetails/$assetdetailId/edit")->with('success', Lang::get('admin/assetdetails/message.update.success'));
            }
        }

        // Redirect to the asset management page with error
        return Redirect::to("admin/settings/assetdetails/$assetdetailId/edit")->with('error', Lang::get('admin/assetdetails/message.update.error'));

    }
}