Я пытаюсь использовать метод Eloquent's
updateOrInsert
для заполнения таблицы mySQL
, вот миграция:
Schema::create('myTable', function (Blueprint $table) {
$table->increments('id');
$table->time('value1')->nullable();
$table->time('value2')->nullable();
$table->time('value3')->nullable();
$table->time('value4')->nullable();
});
}
Вот контроллер:
DB::connection('myDB')->table('myTable')
->updateOrInsert(
[
'id' => $request->id
],
[
'value1' => $request->value1,
'value2' => $request->value2,
'value3' => $request->value3,
'value4' => $request->value4
]
);
Вот запрос axios.post()
:
axios.post("populateMyTable/", {
id: this.newTableEntry.id,
value1: this.newTableEntry.value1,
value2: this.newTableEntry.value2,
value3: this.newTableEntry.value3,
value4: this.newTableEntry.value4
});
Теперь, что я в основном пытаюсь достичь, так это, если в БД нет записи с идентификатором запроса, создайте ее и заполните ее. Если есть, просто обновите значения указанной записи. Тем не менее, я изо всех сил стараюсь сделать работу: если есть запись, я хочу обновить только переданные значения (скажем, value1 / value3) и не трогать другие (поэтому я сделал их nullable();
).
Однако, что происходит каждый раз, когда я делаю запись, если некоторые значения остаются пустыми, они обновляются до нуля, независимо от того, содержат ли они уже данные из предыдущих записей, и если, скажем, я уже заполнилvalue1 с 1
, и теперь вставьте 1
снова, оно не становится 2
(не добавляет значения из каждого запроса, просто обновляет их). Я чувствую, что все в порядке с этим, но я довольно плохо знаком с mySQL
& Eloquent
, поэтому, если кто-нибудь сможет мне здесь помочь, это будет здорово! Заранее спасибо!