2016-12-21 2 views
2

Laravel 5.2 Eloquent의 매우 이상한 행동에 직면하고 있습니다. 테이블에 행을 삽입하려고하면 ID가 증가한 객체가 반환됩니다. 이제 문제는 반환하는 ID가 해당 행의 ID가 아니라는 것입니다.ID가 잘못되었습니다. Laravel Eloquent

내 코드 : 나는 그것이 데이터베이스에서 제품 ID 난의 기록을 만들 책임이 동기화 컨트롤러를 개발 5.

경우에도 31을 반환 $product_p->id에 액세스하려고

DB::beginTransaction(); 

    //create a new product 
    $product_p = new Product(); 
    $product_p->name = $request->name; 
    $product_p->barcode = $request->barcode; 
    $product_p->sale_price = $request->sale_price; 
    $product_p->save(); 
    echo $product_p->id; //this gives invalid ID  
    DB::commit(); 

실행 된 모든 쿼리, 추가 조사에서 ID가 잘못된 ID를 담당하고 있음을 발견했습니다.

내 경로 파일

// SyncController 
\Event::listen('Illuminate\Database\Events\QueryExecuted', function ($query)  { 
    $sync = new \App\Http\Controllers\SyncController(); 
    $sync->addOperation($query->sql, $query->bindings); 
}); 

내 동기화 컨트롤러

 DB::beginTransaction(); 
     $sync = New Sync(); 
     $sync->action = $sql; 
     $sync->data = json_encode($data); 
     $sync->save(); 
    DB::commit(); 

제품

id Primary int(10)  UNSIGNED AUTO_INCREMENT 
name  varchar(255) 
barcode  int(11) 
sale_price int(11) 

에 대한 나의 DB 구조이 내 제품 마이그레이션입니다

 Schema::create('products', function(Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->integer('barcode')->unique(); 
      $table->integer('sale_price'); 
      $table->timestamps(); 
     }); 
+0

은 당신이 다른 데이터베이스를 사용하는 수 있습니까? – Yada

+0

nopes. 제품 모델을 사용하고 있습니다. 클래스 제품 확장 모델 { \t \t 보호 된 $ fillable = [ 'name', 'barcode', 'sale_price']; \t \t protected $ table = "products"; ** 제품 ** ** 표를 확인하고 있습니다 ** –

+0

게시를 완료하려면 게시물을 업데이트해야한다고 생각합니다. 제공하신 최신 정보만으로는 직면하고있는 문제를 효과적으로 시뮬레이션 및 해결할 수 없습니다. 또한 쉽게 구별 할 수 있도록 파일 내용에 레이블을 지정하십시오. 귀하의 테이블 및/또는 스크립트의 스크린 샷이 똑같이 도움이 될 수 있습니다. – nyedidikeke

답변

0

컨트롤러의 저장 방법에서 시도해보십시오.

$input_data = $request->all(); 
$last_inserted_data = YourModelName::create($input_data); 
dd($last_inserted_data) 

확인 DD의 출력()

+0

동일한 문제. 그것은 똑같이 돌아온다. 재방송을 시도했는데 ID가 5에서 시작되는 반면 데이터베이스에서 1부터 시작됩니다. –