あなたはwinners
テーブルに新しいレコードを追加した場合、あなたは内の複数のレコードを追加するEloquent
モデルとinsert
方法を使用することができます単一のクエリ。
$qcodes = Qrcode::all()->map(function(Qrcode $qrcode) {
return [
'id' => $qrcode->id,
'product_id' => $qrcode->product_id,
'qrcode_id' => $qrcode->qrcode_id,
'winner_name' => 'some name',
'win_number' => 5
];
});
Winner::insert($qcodes);
しかし、あなたが言ったことから推測、それはあなたが後にしているものはおそらくない - つまり既存のレコードを更新するために - あなただけproduct_id
とqrcode_id
追加することにしたいよう。
それが事実だし、あなたのid
列がテーブルの両方に一致する場合、あなたはに似た何かをすることができれば:
$qcodes = Qrcode::all();
$qcodes->each(function(Qrcode $qrcode) {
Winner::where('id', $qrcode->id)->update([
'product_id' => $qrcode->product_id,
'qrcode_id' => $qrcode->qrcode_id
]);
});
これは、再び、あなたがEloquent
モデルを使用していると仮定している - そう、あなたが持っているだろうQuery Builder
を使用してそれを行うには:
$qcodes= DB::table('qr_details')->get();
$qcodes->each(function(Qrcode $qrcode) {
DB::table('winners')
->where('id', $qrcode->id)
->update([
'product_id' => $qrcode->product_id,
'qrcode_id' => $qrcode->qrcode_id
]);
});
あなたはそれに応じてテーブル/モデル名を更新していることを確認します。
は今、あなたのSQL構造を持つ1つの問題は、あなたのwinners
テーブルproduct_id
とqrcode_id
がNOT NULL
がそう、それはレコードが最初に作成されたときにそこにいくつかのデータを持っている必要があるということです。これらのレコードを更新する場合は、これら2つの列をNULL
に変更して、最初はデータを必要としないようにすることをお勧めします。
単純なgetクエリを使って 'qr_details'テーブルの詳細を取得してから挿入してください! –