Как хранить базу данных массива данных JSON, если эти данные поступают из API в Laravel? - PullRequest
0 голосов
/ 24 августа 2018

Я работаю над системой онлайн-экзаменов на уровне 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);
}

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Кодировать массив, используя 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);
    } 
}

Надеюсь, это поможет вам.

0 голосов
/ 24 августа 2018

Преобразовать массивы в строку json с помощью функции json_encode и затем сохранить ее

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...