2014-04-19 3 views
0

데이터베이스에 복합 키가 있습니다. 하지만 양식을 제출할 때 오류가 발생합니다. 왜 기본 키에 대한 복제 때문에 오류가 발생하는지 알고 있습니다. 그러나 내가 laravel 4에 고칠 수 있습니다 방법을 몰라 여기 스키마 여기라라 벨 4의 복합 키 유효성 확인

Schema::create('lecture_delegates', function($table){ 
      $table->increments('id'); 
      $table->integer('lecture_id'); 
      $table->integer('delegate_id'); 
      $table->timestamps(); 
      $table->unique(array('lecture_id', 'delegate_id')); 
     }); 

모델! 이미 felixkiss 사용이다,하지만 작동하지 않습니다.

class LectureDelegate extends BaseModel 
{ 
    public static $unguarded = true; 
    protected $table = 'lecture_delegates'; 
    public static $rules = array(
     'lecture_id' => 'required|unique_with:lecture_delegates, delegate_id', 
     'delegate_id' => 'required' 
    ); 
} 

그리고 컨트롤러 :

class LectureDelegatesController extends BaseController { 


    public function create() 
    { 
     $validation = Lecture::validate(Input::all()); 
     $lecture_id = Input::get('lecture_id'); 
     $delegate_id = Input::get('delegate_id'); 


     if ($validation->fails()) { 
      return Redirect::to('lecture', $lecture_id)->withErrors($validator)->withInput(); 
     }else { 
      LectureDelegate::create(array(
       'lecture_id' => Input::get('lecture_id'), 
       'delegate_id'=> Input::get('delegate_id') 
      )); 
      return Redirect::to('/')->with('message', 'Your are successfully apply to the lecture'); 
     } 
    } 
} 

그리고 형태 :

{{ Form::open(array('route' =>'create_lecture_delegate', 'method' =>'POST')) }} 
       {{ Form::hidden('lecture_id', $lecture->id) }} 
       {{ Form::hidden('delegate_id', Auth::user()->id) }} 
       <p>{{ Form::submit('Apply') }}</p> 
      {{ Form::close() }} 

내가 양식을 제출하려고

가이 오류 메시지가 표시.

SQLSTATE [23000] 무결성 제약 위반 : 키 'lecture_delegates_lecture_id_delegate_id_unique'에 대한 1,062 중복 엔트리 '1-4'(SQL은 : 삽입 lecture_delegates (lecture_id, delegate_id, updated_at, created_at)의 값 (1, 4, 2014-04 -19 08:22:37, 2014-04-19 08:22:37))

답변

0

테이블에 대한 복합 기본 키를 만들려면 해당 테이블을 만들 때이를 지정해야합니다.

이 될 것입니다 귀하의 경우에 official documentation regarding indexes

에서 봐 주시기 바랍니다 :

Schema::create('lecture_delegates', function($table){ 
      $table->increments('id'); 
      $table->integer('lecture_id'); 
      $table->integer('delegate_id'); 
      $table->timestamps(); 
      $table->primary(array('lecture_id', 'delegate_id')); 
      $table->unique(array('lecture_id', 'delegate_id')); 
     }); 

주를 $table->primary(array('lecture_id', 'delegate_id'));