2014-11-03 4 views
0

하나의 열 업데이트 쿼리가 수행되지 않습니다. 추가 된 데이터가 데이터베이스에서 업데이트되지 않습니다.laraveldb 업데이트가 수행되지 않습니다.

내보기 :

<?php echo Form::open(array('url' => 'admin/add-edit-spe')) ;?> 
/* form elements */ 

Admincontroller는

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

검증 오류가 보여

Undefined property: Illuminate\Validation\Validator::$errors 

dd($validator->messages());의 출력은 :

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

유효성 검증 실패로 인해 else 부분이 실행되지 않습니다. 아무도이 유효성 검사 오류가 무슨 뜻인지 말해 줄래? 왜 그런가?

Edition은 내가 이런 식으로 삽입 및 업데이트에 대한 유효성 검사 규칙을 다시 배열

을했다 :

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

을이 경우 그 갱신에 삽입 노력하고, 노력하고 있습니다. 그러나 하나의 경우 만 만족하지 못합니다. "db에 이름이"abc "및"xyz "인 항목이 포함되어있는 경우 삽입 중에이 항목이 고유한지 확인합니다. 그러나 편집을 위해"xyz "를 선택하고 이름을 변경하면 "abc"로 두 번 클릭하면 "abc"가 발생합니다 "존재"규칙이 충족됩니다.이 시나리오는 발생하지 않아야합니다.이 테스트 사례를 피하기 위해 어떻게해야합니까?

+0

당신이 laravel 필요한 모든 얻을 수 있음을 디버깅 않았다 양식에서 매개 변수를 게시 하시겠습니까? – Serg

+1

@Serg : app.php에서 디버그를 true로 표시했습니다. 사이트에 오류가 표시되지 않았습니다. (용서해주세요 .. 오늘은 laravel을 배우기 시작했습니다.) – Zammuuz

+1

DB :: table ('spec') 바로 앞에 줄'dd ($ data) '를 추가하면 출력물을 게시 할 수 있습니까? -> update() ? – soulkphp

답변

0

업데이트하려면이 규칙을 사용하십시오. 규칙을 현재 행 ID를 전달합니다. 더 자세한 내용 매력

$rules = array(     
     'spe_name' => 'required|unique:spec,:id', 
     'description' => 'required' 
) 

을 할 것입니다 check

+0

그러면 업데이트하는 동안 입력 한 이름이 고유한지 어떻게 확인할 수 있습니까? 즉, 예를 들어 "abc"라는 항목이 이미 있고 업데이트를 위해 "xyz"항목을 가져온 경우입니다. 그리고 나는 그 이름을 "abc"로 편집하고 update를 클릭한다. 이 시나리오는 발생하지 않아야합니다. – Zammuuz

+0

고유 삭제 : 사양. 당신이 유일한 수표를 원하지 않는다면. –

+0

나는 의견을 편집했습니다. 해당 시나리오를 확인하십시오. – Zammuuz

관련 문제