我对 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();
}
任何帮助理解如何完成这项工作的帮助将不胜感激!
您正在尝试在单个数组上运行循环。
$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();
}
}