非常简单的任务。从API获取多个数据(发票)。
foreach($items->data as $item) {
$invoice = Invoice::firstOrNew(array('invoice_number' => $item->DocumentNo));
$invoice->total = $item->GrandTotal;
$invoice->save();
$m = 0;
foreach ($item->lines as $product) {
$productModel = Product::find(1)->where('unique_id', '=', $product->Product)->first();
if(isset($productModel)) {
$productToInvoice = ProductToInvoice::firstOrNew(array('product_id' => $productModel->product_id, 'invoice_id' => $invoice->id));
$productToInvoice->total = $product->LineNetAmt;
$productToInvoice->quantity = $product->QtyEntered;
$productToInvoice->price = $product->PriceEntered;
$productToInvoice->save();
}
$m++;
}
}
$item->lines
是发票内的产品。来自API的数据。我使用以下行将此数据连接到Product
模型:
$productModel = Product::find(1)->where('unique_id', '=', $product->Product)->first();
当发票不存在时,一切似乎都没问题。产品系列正确添加。
如果发票存在(以及产品系列):它会更新行,但total
,quantity
和price
对所有行都相同。
编辑:如果你在循环中var_dump($m)
- 它将打印0,1(对于2行),但如果你保存,例如productToInvoice->price = $m
,它将为每个条目/行保存1。 / p>
我到底错在了什么?
答案 0 :(得分:0)
你应该试试这个:
$productToInvoice->total = $productModel->LineNetAmt; // $productModel insted of $product
$productToInvoice->quantity = $productModel->QtyEntered; // $productModel insted of $product
$productToInvoice->price = $productModel->PriceEntered; // $productModel insted of $product
答案 1 :(得分:0)
我认为这就是这条线
Product::find(1)
您每次都找到id
1的产品。
那条线应该是
$productModel = Product::where('unique_id', '=', $product->Product)->first();