php - laravel 将 json 保存到数据库 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);
推荐阅读
- javascript - Angular WebSocket 如何从 Angular 服务中的实时输出流中获取数据
- r - 条件在函数评估中的长度大于 1
- ios - Xcode 11.2.1 意外退出
- powerbi - 如何在 Power BI 报告中将星期六设置为一周的第一天?
- javascript - 将 props 传递给 Modal (React Native)
- r - 如何在 R 中选择具有条件的列的一部分?
- kubernetes - 如何在“kubectrl run”中使用 kubernetes secret
- python-3.8 - Python3:FileNotFoundError:[Errno 2] 没有这样的文件或目录:'FIRST_FILENAME.pdf'
- android - 图片未显示在 RecyclerView 中
- c# - 如何使用 C# 在 Selenium 中使元素显示为真