Mysql 如何在Laravel中保存来自另一个数据库的表中的数据?
我需要通过Laravel将订单表中的数据从一个数据库保存到另一个数据库。我在控制器中创建了如下函数:Mysql 如何在Laravel中保存来自另一个数据库的表中的数据?,mysql,laravel,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
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中插入数据时会复制数据吗?这已经不是第一次了,如果你能告诉我一种更有效的工作方法,我很感激。有什么建议吗?提前谢谢你
一种可能性是您在接收数据的表上放置
唯一的
验证,因此我考虑过这一点,但由于创建的id是在foreach内部生成的,因此它可能会重新生成,具有相同的特征,我希望OpenCart提供一些id来促进这些实现。无论如何,我会试着把它放在一张单独的桌子上,我相信它效果更好。(Aliás,sou Parananse também)你有没有仔细检查一下,$orderoc
是否有重复的数据?请尝试dd($orderoc)
并再次检查。您可以在表上使用groupBy
或unique
,以避免join中的重复条目