【问题标题】:laravel save json to database mysqllaravel 将 json 保存到数据库 mysql
【发布时间】:2019-12-24 06:03:52
【问题描述】:

我在将 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'][]['pedido']['id'] 不起作用。您需要使用某种循环来迭代数据并构造一个可行的数组以进行插入,或者在所述循环中一个接一个地插入。

标签: php laravel-5


【解决方案1】:

您只需遍历您的 $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);

【讨论】:

  • 调用未定义的方法 App\Rating::createMany()
  • @LucasSilva 更新了答案。
  • const VERSION = '6.8.0';
猜你喜欢
  • 2011-10-14
  • 2017-06-22
  • 2018-03-04
  • 2016-11-21
  • 2021-11-06
  • 2018-09-21
  • 2016-12-13
  • 2012-07-04
  • 1970-01-01
相关资源
最近更新 更多