2017-06-23 21 views
0

Laravelを使用してデータベース間でオーダーテーブルのデータを保存する必要があります。Laravelの別のデータベースからテーブルのデータを保存する方法は?

public function getMarketplace() 
{ 
    $orderoc = OrderOC::orderBy('oc_order.date_added', 'desc') 
         ->join('oc_order_product', 'oc_order_product.order_id', 'oc_order.order_id') 
         ->join('oc_order_history', 'oc_order_history.order_id', 'oc_order.order_id') 
         ->where('oc_order_history.order_status_id', '=', '17') 
         ->get(); 

    foreach($orderoc as $oc){ 

     $ordererp = new Order; 
     $ordererp->erp_createdid = $oc->created_id; 
     $ordererp->erp_marketplaceid = 1; 
     $ordererp->erp_site = rand(1,100000000); 
     $ordererp->erp_payment_method = $oc->payment_method; 
     $ordererp->erp_orderdate = $oc->date_added; 
     $ordererp->erp_orderaprove = $oc->date_added; 
     $ordererp->erp_billingid = 1; 
     $ordererp->erp_shippingid = 1; 
     $ordererp->erp_marketplace = 'Comércio Urbano'; 
     $ordererp->erp_orderquantity = $oc->quantity; 
     $ordererp->erp_erro = ''; 
     $ordererp->erp_product_ok = 1; 
     $ordererp->erp_compraId = null; 
     $ordererp->save(); 

     if(strlen($oc->created_id) == 0){ 
      $oc->created_id = rand(1,10000000); 
      $oc->save(); 
     } 

     $orderprod = new OrderProduct; 
     $orderprod->erp_productid = $oc->product_id; 
     $orderprod->erp_createdid = $oc->created_id; 
     $orderprod->erp_model = $oc->model; 
     $orderprod->erp_quantity = $oc->quantity; 
    } 
} 

一つのテーブルには、私のERPからのものであり、他はOpenCartの購入を受信するための責任があるが、私は実行するたびに、同じ製品が私のためのテーブルに複数回表示されます。私はこのように私のコントローラ内の関数を作成しました。 (コントローラの機能でcreated_idが作成されているため、購入日時を確認することができます)

foreach内にデータを挿入するとデータが重複する理由を知りませんか?これは初めてではありません。私が仕事をするより堅牢な方法を教えれば、感謝しています。なにか提案を?前もって感謝します!

enter image description here

+0

を受けるテーブルの上にunique検証を入れて、あなたはダブルチェック多分 '$のorderoc'は、件のデータを重複していることがありますか? 'dd($ orderoc)'を試して、もう一度チェックしてください。 –

+0

テーブル上で 'groupBy'または' unique'を使ってテーブルから重複したエントリを避けることができます –

答えて

0

一つpossiblityあなたはデータ

+0

私はそれについて考えましたが、foreach内でcreated_idが生成されているので、これらの実装を容易にするためにOpenCartにIDを提供したいと考えています。とにかく、私は別のテーブルに入れようとします、私はそれがより良いと信じています。 (Aliás、sou paranaensetambém) –

関連する問題