【问题标题】:How to store JSON data array database if this data come from API in Laravel?如果这些数据来自 Laravel 中的 API,如何存储 JSON 数据数组数据库?
【发布时间】:2018-08-24 19:48:36
【问题描述】:

当用户参加考试时,我正在 laravel 上开发在线考试系统我想从 API 接收一些数据并存储在数据库中。 数据将是这样的。

{
    "user_id": [
        "420"
    ],
    "test_id": [
        "12"
    ],
    "question_id": [
        "1",
        "2",
        "3",
        "4"
    ]
}

我的控制器

$fbres       = new Testapp;
$json        = $request->all();
$data        = $json;

$user_id     = $request->user_id;
$question_id = $request->question_id;
$test_id     = $request->test_id;

foreach ($data as $key)
{
    $user_id     = $key['user_id'];
    $test_id     = $key['test_id'];
    $question_id = $key['question_id'];

    $data1 = array(
        array('user_id'=> $user_id, 'question_id'=> $question_id, 'test_id'=> $test_id)
    );

    $fbres::insert($data1);
}

【问题讨论】:

标签: php arrays laravel


【解决方案1】:

使用json_encode() php 方法对数组进行编码。并且无需调用插入循环。这很耗时,并且可能会破坏您的数据库。

$fbres       = new Testapp;
$json        = $request->all();
$data        = $json;
$data        = $request->ques;
$user_id     = $request->user_id;
$question_id = $request->question_id;
$test_id     = $request->test_id;

$finalData = array();
$blankArr = array();
//Check for array 1-d or 2-d
if(isset($data["user_id"])){
  array_push($blankArr, $data);
}else{
 $blankArr = $data;
}
foreach ($blankArr as $key => $value)
{
    $usr_id     = $value['user_id']['0'];
    $test_id     = $value['test_id']['0'];
    foreach($value['question_id'] as $k => $v){
         $finalData = array('user_id'=> $usr_id, 'question_id'=> $v, 'test_id'=> $test_id);

         $fbres::insert($finalData);
    } 
}

希望对你有所帮助。

【讨论】:

  • 循环中出现“未定义索引:user_id”错误
  • 检查你的数组 user_id 是否到来?如果没有,那么在 $key[''] 上使用 isset() 方法,让我知道它是否有帮助?
  • 当我使用 print_r($data) 它返回“Array ([user_id] => Array ([0] => 420) [test_id] => Array ([0] => 12) [ question_id] => 数组 ([0] => 1 [1] => 2 [2] => 3 [3] => 4))"
  • @brij 试试这个。我已经编辑了代码并告诉我
【解决方案2】:

使用 json_encode 函数将数组转换为 json 字符串然后存储

$fbres = new Testapp;
$json = $request->all();
$data = $json;

$data = $request->ques;

$user_id = $request->user_id;
$question_id = $request->question_id;
$test_id     = $request->test_id;

 $data1 = array(
        array('user_id'=> json_encode($user_id), 'question_id'=> json_encode($question_id), 'test_id'=> json_encode($test_id))
    );
    $fbres::insert($data1);

【讨论】:

  • 在 foreach 循环中抛出错误“Undefined index: user_id”
  • 为什么你使用 foreach ?我已经更新了我的答案,现在检查。
猜你喜欢
  • 1970-01-01
  • 2021-06-10
  • 2019-12-13
  • 2021-03-12
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
相关资源
最近更新 更多