代码之家  ›  专栏  ›  技术社区  ›  ashish

Laravel 5.4更新或创建不起作用

  •  4
  • ashish  · 技术社区  · 6 年前

    我拥有的:

    发票 发票项目 具有的型号 有很多 贝朗斯托 相互之间的关系。发票可以有多个发票项,并且一个发票项将仅属于其发票。基本型。

    情况: 创作作品恰到好处。但当我试图用标准更新现有发票时 createOrUpdate 发生以下情况。

    1. 如果尚未创建新行,则会很好地更新现有发票。
    2. 如果我添加了新的发票项目,则会显示 未定义索引:id 错误

    以下是Im使用createOrUpdate的方式:

    $invoice->update($invoiceRequest->except('items'));
    
    foreach($items as $item) {
            $invoice->invoiceitem()->updateOrCreate(['id'=> $item['id']],$item);
    }
    

    我到底错过了什么?

    下面是我的$项目的外观

     {
     "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)创建为新行。有人请告诉我我到底在哪里失踪了。如果您需要更多信息,请告诉我

    1 回复  |  直到 6 年前
        1
  •  2
  •   Alexey Mezenin    6 年前

    中的最后一个元素 $items 没有 id :

    {
        "invoiceable_id": "1",
        "fiscal_id": "1",
        "itemdue": "2018-01-24",
        "description": "renewals",
        "amount": "100"
    }
    

    这就是为什么 $item['id'] 提供错误信息。

    您可能希望使用以下内容检查数据:

    if (isset($item['id']))