Php Laravel 5.4更新或创建不起作用
我所拥有的: 发票和发票项目模型与有许多和属于彼此的关系。发票可以有多个发票项,并且一个发票项仅属于其发票。基本的 情况: 创作作品恰到好处。但当我试图用standardcreateOrUpdate更新现有发票时,会发生以下情况Php Laravel 5.4更新或创建不起作用,php,laravel,laravel-5,laravel-5.3,laravel-5.4,Php,Laravel,Laravel 5,Laravel 5.3,Laravel 5.4,我所拥有的: 发票和发票项目模型与有许多和属于彼此的关系。发票可以有多个发票项,并且一个发票项仅属于其发票。基本的 情况: 创作作品恰到好处。但当我试图用standardcreateOrUpdate更新现有发票时,会发生以下情况 如果尚未创建新行,则会更新现有发票 如果我添加了新的发票项目,它将给出未定义的索引:id错误 这就是我使用createOrUpdate的方式: $invoice->update($invoiceRequest->except('items')); fore
$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']))
它没有id,因为此项是新添加的项。这就是我面临的问题。我想创建这个项目。若要创建新项,不需要id。好的,您迭代集合并
$item['id']
抛出错误。您需要添加我在更新的答案中显示的检查。我是否使用带有建议条件的IF单独执行创建和更新?你能推荐我吗furthermore@ashish如果要在ID为空时创建新记录,请执行以下操作:'ID'=>isset($item['ID'])$item['id']:0
而不是$item['id']
在控制器中(在您提供的行之前)如何定义$items?我也有类似的情况,我想看看你是如何设置updateOrCreate的,因为它对我来说是一个新的领域。@Matthew Mine已排序,让我们来解决你的问题。主要问题似乎是新项目的invoiceitems中缺少“id”。您可以有一个空白的id字段并保存它,也可以使用isset($item['id'])$项['id']:0与我一样。这对我有用。如果你需要我的帮助,请告诉我