如何保存通过向 Laravel 发送请求作为对象数组发送的多条记录

问题描述 投票:0回答:1

我对 Laravel 和 Web 开发总体来说是新手。我在一个简单的单页应用程序中使用 Angular 作为前端,使用 Laravel 作为后端。我有一个带有复选框的表,我想将所有选中的行保存到我的数据库中。目前,我正在通过 POST 请求向 Laravel 发送一组对象,如下所示:

Array [ {…}, {…} ] ​ 0: Object { timeReal: "19:40:00", type: "Passenger", … } ​ 
                    1: Object {   timeReal: "19:50:00", type: "Passenger", … } ​ length: 2 ​ <prototype>: Array []  

在 Laravel 中,我正在尝试以下操作来查找对象:

public function store(Request $requests)
{
    $datas = $requests->all();
    $data = $datas[0];
    foreach ($data as $request) {
        $flight = new Flights;
        $flight->id_row_fr = $request->input('flight.identification.row');
        $flight->flight_number = $request->input('flight.identification.number');
        $flight->airline_iata = $request->input('flight.airline.code.iata');
        $flight->airline_icao = $request->input('flight.airline.code.icao');
        $flight->save();
    }
}

如果我对索引太深入,我会得到“调用数组上的成员函数 input()”或在某个时刻“未定义的数组键 0”。我知道

->all()
返回和数组,我不确定 $requests 是什么样的,我相信它是一个对象。当用它发送单独的行时,它可以工作:

public function store(Request $request)
{
    $flight = new Flights;
    $flight->id_row_fr = $request->input('flight.identification.row');
    $flight->flight_number = $request->input('flight.identification.number');
    $flight->airline_iata = $request->input('flight.airline.code.iata');
    $flight->airline_icao = $request->input('flight.airline.code.icao');
    $flight->save();
}

任何帮助理解如何完成这项工作的帮助将不胜感激!

php arrays laravel httprequest
1个回答
0
投票

您正在尝试在单个数组上运行循环。

$data = $datas[0];
表示获取索引数组的第一个索引,在您的情况下是单个数组。只需迭代这个
$datas = $requests->all();

所以你的代码的最终版本应该如下所示:

public function store(Request $request)
{
  $datas = $request->all();
  foreach ($datas as $data) {
    $flight = new Flights;
    $flight->id_row_fr = $data['flight']['identification']['row'];
    $flight->flight_number = $data['flight']['identification']['number'];
    $flight->airline_iata = $data['flight']['airline']['code']['iata'];
    $flight->airline_icao = $data['flight']['airline']['code']['icao'];
    $flight->save();
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.