私は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();
});
)(DDからの出力を確認してくださいあなたは異なるデータベースを使用していることが可能ですか? – Yada
私は製品モデルを使用しています。 クラス製品拡張モデル { \t \t protected $ fillable = ['name'、 'barcode'、 'sale_price']; \t \t protected $ table = "products"; **商品** **テーブル –
を確認しています投稿を更新して完了させることを検討してください。あなたが提供している最新の情報は、あなたが直面している課題を効果的にシミュレートしたり、トラブルシューティングしたりするには十分ではありません。また、簡単に区別できるように、ファイルの内容にラベルを付けるようにしてください。テーブルやスクリプトのスクリーンショットも同じように役立つかもしれません。 – nyedidikeke