2017-10-10 6 views
1

가 나는 두 개의 테이블이 있습니다다른 테이블 데이터를 다른 테이블에 삽입하는 방법 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

난 정말 당신의 질문을 이해하지 않습니다하지만 당신은 시도 할 수 있습니다이 : 당신이 다음에 여러 레코드를 추가 Eloquent 모델과 insert 방법을 사용할 수 winners 테이블에 새 레코드를 추가한다면

$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

단일 쿼리.

$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 구조를 가진 하나의 문제는 winners 테이블 product_idqrcode_idNOT NULL은 그래서 레코드가 처음 만들어 질 때 거기에 일부 데이터를 가지고하는 것입니다. 이 레코드를 업데이트하는 경우이 두 열을 NULL으로 변경하여 처음에는 데이터가 필요하지 않도록 제안합니다.