Laravel 如何制作一个处理对象数组的 POST?

Posted

技术标签:

【中文标题】Laravel 如何制作一个处理对象数组的 POST?【英文标题】:Laravel How to make a POST that handles an array of objects? 【发布时间】:2020-04-02 09:05:48 【问题描述】:

这是我要插入的表格的模型:

  protected $table ="final_schedule";
  public $timestamps = false;

  protected $fillable = [
    'CWID', //varchar
    'CRN', //int
    'Date_Registered'//date
  ];

这是我现在拥有的插入功能:

<?php

namespace App\Http\Controllers\Student;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\finalScheduleModel;

class finalScheduleController extends Controller

    public function insert(Request $request)
      $finalSchedule = new finalScheduleModel;
      $finalSchedule->CWID=$request->input('CWID');
      $finalSchedule->CRN=$request->input('CRN');
      $finalSchedule->Date_Registered=$request->input('Date_Registered');
      $finalSchedule->save();
    

路线: Route::post('insert/', 'Student\finalScheduleController@insert');

这是我希望它处理的数据:

[
    
    "CWID":"C38475920",
    "CRN":345627,
    "Date_Registered":"2020-04-02"
    ,
    
    "CWID":"C38475920",
    "CRN":678595,
    "Date_Registered":"2020-04-02"
    ,
    
    "CWID":"C38475920",
    "CRN":473876,
    "Date_Registered":"2020-04-02"
    
]

至少我认为是。上面的数据结构是不是和这个一样?

(3) […, …, …]
0: …
1: …
2: …

【问题讨论】:

【参考方案1】:

您甚至可以通过一次 insert 调用将多条记录插入表中

$items = $request->all();

$items = [
    [
       "CWID"=>"C38475920",
       "CRN"=>345627,
       "Date_Registered"=>"2020-04-02"
    ],
    [
       "CWID"=>"C38475920",
       "CRN"=>678595,
       "Date_Registered"=>"2020-04-02"
    ],
    [
       "CWID"=>"C38475920",
       "CRN"=>473876,
       "Date_Registered"=>"2020-04-02"
    ]
]

finalScheduleModel::insert($items);

DB::table('final_schedule')->insert($items);

【讨论】:

甜哥!谢谢一百万

以上是关于Laravel 如何制作一个处理对象数组的 POST?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用处理 Java 库将自定义形状数组和字符串数组合并到 JSON 对象中

如何在laravel中搜索具有数组属性的对象数组

Laravel map():如何改变对象和数组?

Laravel - 我如何发布对象数组?

Laravel 如何获取数组而不是 QueryBuilder select() 语句的对象?

如何使用 vform 将对象数组传递给 laravel