首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >laravel更新没有执行。

laravel更新没有执行。
EN

Stack Overflow用户
提问于 2014-11-03 08:01:49
回答 1查看 205关注 0票数 0

没有执行一个列更新查询。添加的数据不在数据库中更新。

我的看法是:

代码语言:javascript
复制
<?php echo Form::open(array('url' => 'admin/add-edit-spe')) ;?>
 /* form elements */

管理控制器

代码语言:javascript
复制
    public function postAddEditSpe()  
         {
    Input::flash();
    $rules = array(                    
            'spe_name' => 'required|unique:spec',
            'description' => 'required'
    );    
    $messages = array(
            'spe_name.required' => 'Spe name is required',
            'spe_name.unique:' => 'Spe name should be unique',
            'description.required' => 'Spe description is required',
    );
     $validator = Validator::make(Input::all(), $rules, $messages);
 if ($validator->fails())
            {
                dd($validator->errors);
    /*  shows the same page */
}
 else{
     $data['spe_id']=Input::get('spe_id');
                $data['spe_name']=Input::get('spe_name');
                $data['spe_content']=Input::get('description');
                $data['r_tags']=Input::get('r_tags');
                $data['f_spe']=Input::get('f_spe');
                $data['r_spe']=implode(",",Input::get('r_id'));
    DB::table('spec')->where('spe_id','=',$data['spe_id'])->update(array('spe_name' => $data['spe_name'],'spe_content' => $data['spe_content'],'f_spe' => $data['f_spe'],'related_spe' => $data['r_spe'],'r_tags' => $data['r_tags']));
    }
      }

验证错误显示:

代码语言:javascript
复制
Undefined property: Illuminate\Validation\Validator::$errors

dd($validator->messages());的输出是:

代码语言:javascript
复制
object(Illuminate\Support\MessageBag)#895 (2) { ["messages":protected]=> array(1) { ["spe_name"]=> array(1) { [0]=> string(43) "The spe name has already been taken." } } ["format":protected]=> string(8) ":message" } 

其他部分由于验证失败而不执行。有人能告诉我这个验证错误意味着什么吗?为什么会发生?

版我制作了

我重新安排了插入和更新的验证规则如下:

代码语言:javascript
复制
if(Input::get('speciality_id')!=0){
          // Updation
           $rules = array(                    
                'speciality_name' => 'required|exists:speciality',
                'description' => 'required'
        );  
        }
        else{
        // Insert
        $rules = array(                    
                'speciality_name' => 'required|unique:speciality',
                'description' => 'required'
        );  
       }

在这种情况下,升级是有效的,插入是有效的。但是只有一种情况不令人满意,那就是“如果数据库包含一个名为"abc”和"xyz“的条目。我们将在插入时检查它们是否是唯一的。但是如果我为Edit选择"xyz”并将其名称更改为"abc“并单击update.两个"abc”将出现。“存在”规则满足。这种情况不能发生。我应该做什么来避免这个测试用例。?

EN

回答 1

Stack Overflow用户

发布于 2014-11-03 10:22:49

对于晋升,请使用此规则。将当前行id传递给规则。它会有魅力的

代码语言:javascript
复制
$rules = array(                    
        'spe_name' => 'required|unique:spec,:id',
        'description' => 'required'
 )

有关更多信息,检查

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26710043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档