Laravel 5.4 updateOrCreate 不起作用
Laravel 5.4 updateOrCreate doesnt work
我有:
Invoice 和 Invoiceitems 模型 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)应创建为新行。有人请让我知道我到底在哪里失踪。如果您需要更多信息,请告诉我
$items
中的最后一个元素没有 id
:
{
"invoiceable_id": "1",
"fiscal_id": "1",
"itemdue": "2018-01-24",
"description": "renewals",
"amount": "100"
}
这就是 $item['id']
给您错误的原因。
您可能想用这样的方式检查数据:
if (isset($item['id']))
我有:
Invoice 和 Invoiceitems 模型 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)应创建为新行。有人请让我知道我到底在哪里失踪。如果您需要更多信息,请告诉我
$items
中的最后一个元素没有 id
:
{
"invoiceable_id": "1",
"fiscal_id": "1",
"itemdue": "2018-01-24",
"description": "renewals",
"amount": "100"
}
这就是 $item['id']
给您错误的原因。
您可能想用这样的方式检查数据:
if (isset($item['id']))