Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.4更新或创建不起作用_Php_Laravel_Laravel 5_Laravel 5.3_Laravel 5.4 - Fatal编程技术网

Php Laravel 5.4更新或创建不起作用

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

我所拥有的:

发票发票项目模型与有许多属于彼此的关系。发票可以有多个发票项,并且一个发票项仅属于其发票。基本的

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

  • 如果尚未创建新行,则会更新现有发票
  • 如果我添加了新的发票项目,它将给出未定义的索引: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']))
    

    它没有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与我一样。这对我有用。如果你需要我的帮助,请告诉我