我有什么:
发票和发票项目模型,它们之间具有hasMany和belongsTo关系。 发票可以有多个发票项目,而一个发票项目仅属于其发票。这是基本的一种。
情况: 创建工作正常。 但是,当我尝试使用标准的createOrUpdate更新现有发票时,会发生以下情况。
- 如果未创建新行,则可以更新现有发票。
- 如果我添加了新的发票项目,则会出现Undefined index: id错误。
这是我如何使用createOrUpdate:
$invoice->update($invoiceRequest->except('items'));
foreach($items as $item) {
$invoice->invoiceitem()->updateOrCreate(['id'=> $item['id']],$item);
}
这里我到底缺了什么?
下面是我的 $items 变量的样子
{
"id": "1",
"invoiceable_id": "3",
"fiscal_id": "2",
"itemdue": "2018-01-19",
"description": "a",
"amount": "1000"
},
{
"id": "2",
"invoiceable_id": "2",
"fiscal_id": "2",
"itemdue": "2018-01-20",
"description": "b",
"amount": "1000"
},
{
"id": "3",
"invoiceable_id": "3",
"fiscal_id": "2",
"itemdue": "2018-01-19",
"description": "c",
"amount": "1200"
},
{
"invoiceable_id": "1",
"fiscal_id": "1",
"itemdue": "2018-01-24",
"description": "renewals",
"amount": "100"
}
需要更新带有id的项目,而没有id的最后一个项目应该作为新行创建。请问我错在哪里?如果您需要更多信息,请告诉我。
'id' => isset($item['id']) ? $item['id'] : 0
。这对我有用。如果需要帮助,请告诉我。 - ashish