繁体   English   中英

laravel 保存 json 到数据库 mysql

[英]laravel save json to database mysql

我在将 json 结果保存到 mysql 数据库中的表时遇到问题。

JSON 返回

{ "retorno": {
  "status_processamento": 3,
    "status": "OK",
    "pagina": "1",
    "numero_paginas": "1",
    "pedidos": [
      {
        "pedido": {
          "id": 123456,
          "numero": 123456,
          "numero_ecommerce": "12",
          "data_pedido": "01/01/2013",
          "data_prevista": "10/01/2013",
          "nome": "Cliente Teste",
          "valor": "100.25",
          "id_vendedor": "123456",
          "nome_vendedor": "Vendedor Teste",
          "situacao": "Atendido"
        }
      },
      {
        "pedido": {
          "id": 123456,
          "numero": 123458,
          "numero_ecommerce": "15",
          "data_pedido": "01/01/2013",
          "data_prevista": "10/01/2013",
          "nome": "Cliente Teste 3",
          "valor": "50.25",
          "id_vendedor": "",
          "nome_vendedor": "",
          "situacao": "Aberto"
        }
      }
    ]
  }
}

模型

namespace App;

use Illuminate\Database\Eloquent\Model;
class Rating extends Model
{

 protected $fillable = [

          'ratingKey'

      ];

}

控制器

  $data = json_decode($response, true);

  Rating::create(
  [ 'ratingKey'  => $data['retorno']['pedidos'][0]['pedido']['id']   ]);

这段代码运行良好,但只保存了 json 中的一个答案,我想保存所有答案,如果我将代码更改为

'ratingKey'  => $data['retorno']['pedidos'][]['pedido']['id'] 

我收到这个错误

Symfony\\Component\\Debug\\Exception\\FatalErrorException 无法使用 [] 进行读取

您只需要遍历$data['retorno']['pedidos']数组,创建一个结构化的数组数组,以传递给Rating::insert()方法 ( docs )。

$data = json_decode($response, true);

$ratingKeys = [];
foreach($data['retorno']['pedidos'] as $o){
    $ratingKeys[] = ['ratingKey' => $o['pedido']['id']];
}

Rating::insert($ratingKeys);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM