2016-12-21 8 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

)(DDからの出力を確認してくださいあなたは異なるデータベースを使用していることが可能ですか? – Yada

+0

私は製品モデルを使用しています。 クラス製品拡張モデル { \t \t protected $ fillable = ['name'、 'barcode'、 'sale_price']; \t \t protected $ table = "products"; **商品** **テーブル –

+0

を確認しています投稿を更新して完了させることを検討してください。あなたが提供している最新の情報は、あなたが直面している課題を効果的にシミュレートしたり、トラブルシューティングしたりするには十分ではありません。また、簡単に区別できるように、ファイルの内容にラベルを付けるようにしてください。テーブルやスクリプトのスクリーンショットも同じように役立つかもしれません。 – nyedidikeke

答えて

0

コントローラのストアメソッドでこれを試してください。

+0

同じ問題。それは同じに戻ります。私は再実行の移行を試み、私のIDは5から始まりますが、データベースでは1から始まります。 –