Laravel - 来自api的数组帖子保存到数据库,因为"数组"如何获取数组项

时间:2016-07-27 14:28:26

标签: php json api laravel post

我有一个外部api,它向我的服务器发送POST,POST主体以json响应作为数组进入

{
  "IDs": [
    1378143,​1378141,​1971403,​1451025,​1451026,​1374561,​1378036,​1371423,​1371424,​         
    1971568,​1371426,​1718539,​1718515,​1831163,​1718540,​1362068,​1376341,​1378221,
    1378222,​1378220,​1380468,​1380467,​1417322,​1385612,​1971567
  ] 
}

我将帖子保存如下:

$Id = new IdModel();
$Id->id = $request['IDs'];
$Id->save();

这将我的数据库列id中的数组保存为" Array"如何才能保存数组中的所有值而不是单词Array?

4 个答案:

答案 0 :(得分:1)

使用属性转换。打开 IdModel 模型并添加:

protected $casts = [
    'id' => 'array'
];

每次从数据库获取数组时,每次将数据保存到数据库时,都会转换数组。

答案 1 :(得分:0)

$Id = new IdModel(); 
$IDs = '';
foreach($request['IDs'] as $id) {
    $IDs.= ',' . $id;
}
$Id->id = $IDs; 
$Id->save();

您在IDs属性中的内容是一个数组,您应该使用foreach迭代您的数组并连接每个ID以将其保存在您的数据库中。

如果要为每个ID创建一行,则应使用:

foreach($request['IDs'] as $id) {
    $newId = new IdModel();
    $newId->id = $id; 
    $newId->save();
    unset($newId);
}

答案 2 :(得分:0)

只需在循环中添加代码

foreach($request['IDs'] as $id) {
    $obj = new IdModel();
    $obj->id = $id;
    $obj->save();
}

答案 3 :(得分:0)

我将数据类型更改为@TheFallen建议的JSON,现在可以使用了。 感谢大家的帮助和意见。