Laravel 500 Ошибка неопределенного индекса. Проблема с каждым созданным массивом l oop? - PullRequest
0 голосов
/ 15 апреля 2020

, поэтому моя проблема возникает, когда я пытаюсь отправить 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 ) и его результатом был массив в верхней части страницы, поэтому я предполагаю, что проблема не в отправляемом массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...