Php laravel将json保存到数据库mysql
我在将json结果保存到mysql数据库中的表时遇到问题 Json返回Php laravel将json保存到数据库mysql,php,laravel-5,Php,Laravel 5,我在将json结果保存到mysql数据库中的表时遇到问题 Json返回 { "retorno": { "status_processamento": 3, "status": "OK", "pagina": "1", "numero_paginas": "1", "pedidos": [ { "pedido": { "id": 123456, "numero": 123456,
{ "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['retrono']['pedidos']数组上迭代,创建一个数组的结构化数组,以传递给Rating::insert方法
此语法:$data['retrono']['pedidos']['pedido']['id']不起作用。您需要使用某种循环来迭代数据并构造一个可插入的数组,或者在所述循环中逐个插入。调用未定义的方法App\Rating::createMany@LucasSilva更新的answer.const版本='6.8.0';
$data = json_decode($response, true);
$ratingKeys = [];
foreach($data['retorno']['pedidos'] as $o){
$ratingKeys[] = ['ratingKey' => $o['pedido']['id']];
}
Rating::insert($ratingKeys);