Ввод данных в Laravel Restful API с использованием JSON - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь опубликовать некоторые данные в Restful API в моем приложении, но у меня нет успеха, когда JSON имеет более одной группы данных.

Это мой пример JSON:

  "data": [     {
        "client_id": "3",
        "veiculo_id": "3",
        "carreta1_id": "3",
        "carreta2_id": "3",
        "motorista1_id": "3",
        "motorista2_id": "3",
        "embarcador_id": "3",
        "inicioprevisao": "2018-10-10 11:00:00",
        "fimprevisao": "2018-10-10 18:00:00",
        "nroliberacao": "3"
     },     
       {
        "client_id": "4",
        "veiculo_id": "4",
        "carreta1_id": "4",
        "carreta2_id": "4",
        "motorista1_id": "4",
        "motorista2_id": "4",
        "embarcador_id": "4",
        "inicioprevisao": "2018-10-10 11:00:00",
        "fimprevisao": "2018-10-10 18:00:00",
        "nroliberacao": "4"
        }   
   ] }

И это мой Контроллер:

public function storeapi(Request $request)
    {
      $array = $request->all();
        foreach ($array['data'] as $row) {
            return Sm::create([
                'client_id' => $row['client_id'],
                'veiculo_id' => $row['veiculo_id'],
                'carreta1_id' => $row['carreta1_id'],
                'carreta2_id' => $row['carreta2_id'],
                'motorista1_id' => $row['motorista1_id'],
                'motorista2_id' => $row['motorista2_id'],
                'embarcador_id' => $row['embarcador_id'],
                'inicioprevisao' => $row['inicioprevisao'],
                'fimprevisao' => $row['fimprevisao'],
                'nroliberacao' => $row['nroliberacao']    
            ]);
      }
}

Таким образом, у меня есть только первый блок, помещенный в базу данных, и мне нужны два блока.Я следую этой статье, но не работаю правильно. laravel 5.6 массовая вставка данных json

1 Ответ

0 голосов
/ 03 октября 2018

Проблема возникает из-за того, что вы используете return в цикле foreach.Я предполагаю, что вы делаете это, потому что вы хотите return идентификаторы вставленных элементов, поэтому было бы лучше обойти это так:

$array = $request->all();
$insertedIds = [];
    foreach ($array['data'] as $row) {
        $newSm = Sm::create([
            'client_id' => $row['client_id'],
            'veiculo_id' => $row['veiculo_id'],
            'carreta1_id' => $row['carreta1_id'],
            'carreta2_id' => $row['carreta2_id'],
            'motorista1_id' => $row['motorista1_id'],
            'motorista2_id' => $row['motorista2_id'],
            'embarcador_id' => $row['embarcador_id'],
            'inicioprevisao' => $row['inicioprevisao'],
            'fimprevisao' => $row['fimprevisao'],
            'nroliberacao' => $row['nroliberacao']    
        ]);
        $insertedIds[] = $newSm->id;
  }
  //Now we can return an array with the inserted elements' IDs
  //In this case, since this is coming from a JSON, we'll answer the same way.
  return response()->json($insertedIds);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...