, поэтому моя проблема возникает, когда я пытаюсь отправить POST, содержащий этот массив объектов:
(2) [{…}, {…}, __ob__: Observer]
0:
CRN: 395098
Course_Code: "CIS321"
Start_Date: "2019-08-26"
End_Date: "2019-12-13"
Course_Time: "12:45:00"
Days_Of_The_Week: "TTR"
Course_Term: "Fall 19"
CWID: "C38475920"
Date_Registered: "2020-04-02"
1:
CRN: 456984
Course_Code: "CIS110"
Start_Date: "2019-08-26"
End_Date: "2019-12-13"
Course_Time: "11:30:00"
Days_Of_The_Week: "TTR"
Course_Term: "Fall 19"
CWID: "C38475920"
Date_Registered: "2020-04-02"
Я отправляю его по этому маршруту: Route::post('insertSchedule/', 'Student\finalScheduleController@insertSchedule');
Который использует эту функцию:
public function insertSchedule(Request $request){
$array = [];
foreach (request()->all() as $value) {
array_push($array, [
'CWID' => $value['CWID'],
'CRN' => $value['CRN'],
'Date_Registered' => $value['Date_Registered']
]);
}
DB::table('final_schedule')->insert($array);
}
Как вы можете видеть из функции выше, я пытаюсь взять массив объектов и помещаю только значения CWID, CRN, Date_Registered в новый массив. Затем я пытаюсь вставить эти значения в мою таблицу final_schedule, которая выглядит следующим образом:
protected $table ="final_schedule";
public $timestamps = false;
protected $fillable = [
'CWID',
'CRN',
'Date_Registered'
];
Однако, когда я делаю этот запрос POST, я получаю ошибку POST http://127.0.0.1:8000/api/insertSchedule 500 (Internal Server Error)
, а ответ "message": "Undefined index: CWID",
Неопределенное индексное сообщение указывает на эту строку в моем коде: 'CWID' => $value['CWID'],
, поэтому значения не вставляются в новый массив $ правильно?
Я предполагаю, что проблема в функции laravel, но вот что Я пытался сделать это на внешнем интерфейсе на всякий случай.
Пользователь выбирает нужные ему курсы и создает массив объектов, который выглядит как массив объектов, которые я вставил вверху, но этот массив пока не имеет полей CWID и Date_Registered.
После того, как они выбрали курсы, на следующей странице я использую эту смонтированную функцию, чтобы сказать, что собираюсь изменить массив позже, чтобы добавить CWID и Date_Registered в массив:
mounted(){
this.$set(this, 'setLater', this.coursesSelected);
},
Когда нажата кнопка подтверждения, он запускает эту функцию, чтобы изменить массив объектов путем добавления CWI D и Date_Registered:
confirmClasses() {
for(this.i=0; this.i<this.coursesSelected.length; this.i++){
this.coursesSelected[this.i].CWID = this.CWID;
this.coursesSelected[this.i].Date_Registered = this.date;
this.setLater[this.i].CWID = this.CWID;
this.setLater[this.i].Date_Registered = this.date;
}
console.log(this.setLater);
axios
.post("http://127.0.0.1:8000/api/insertSchedule", {
body: this.setLater
})
.then(data => {
console.log(data.data);
console.log("success");
})
.catch(error => {
console.log(error);
});
}
Мне было интересно, отслеживает ли система реактивности Vue изменения, внесенные в массив, но перед отправкой POST I console.log (this.setLater ) и его результатом был массив в верхней части страницы, поэтому я предполагаю, что проблема не в отправляемом массиве.