2017-10-10 15 views
1

は、私は2つのテーブルを持っている:別のテーブルのデータを別のテーブルに挿入する方法laravel 5.2?

qr_detailsテーブル:

id  product_id qrcode_id  created_at   updated_at 
1  1    12   2017-10-09 15:36:15 2017-10-09 15:36:15 
2  3    13   2017-10-09 15:36:15 2017-10-09 15:36:15 

受賞者テーブル:

id  product_id qrcode_id  winner_name win_number created_at   updated_at 
1  1    12   hello  5   2017-10-09 15:36:15 2017-10-09 15:36:15 
2  3    13   world  6   2017-10-09 15:36:15 2017-10-09 15:36:15 

は、今私はwinnersテーブルにqr_detailsテーブルproduct_id & qrcode_idを取得したいです。 Laravelでクエリを実行するにはどうすればよいですか?私はSQLのフィドルを作ったhereありがとうございます。

+0

単純なgetクエリを使って 'qr_details'テーブルの詳細を取得してから挿入してください! –

答えて

0

私は本当にあなたの質問を理解していないが、あなたはこれを試すことができます。

$datas = DB::table('qr_details ')->get(); 

foreach($datas as $data){ 
    DB::table('winners')->insert(['qrcode_id' => $data->qrcode_id, 'product_id'=>$data->product_id, ...bunch other inserts]) 
} 
+0

誰かがデータ勝者テーブルを挿入したら、 'qr_details'テーブル' product_id'と 'qrcode_id'を' winners'テーブルに入れたいと思います。あなたの答えは、 '未定義のプロパティ:stdClass :: $ product_id'というエラーです。 –

0

あなたは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_idqrcode_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_idqrcode_idNOT NULLがそう、それはレコードが最初に作成されたときにそこにいくつかのデータを持っている必要があるということです。これらのレコードを更新する場合は、これら2つの列をNULLに変更して、最初はデータを必要としないようにすることをお勧めします。

関連する問題