如何从Laravel中的另一个数据库中保存表中的数据?

时间:2017-06-23 18:28:41

标签: mysql 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

1 个答案:

答案 0 :(得分:0)

一种可能性是将unique验证放在接收数据的表