【发布时间】:2020-02-13 06:31:37
【问题描述】:
我正在尝试使用 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
});
现在我基本上要在这里实现的是,如果数据库中没有具有请求 ID 的记录,则创建一个并填充它。如果有,只需更新所述记录的值。
但是,我正在努力做的是:如果有记录,我只想更新传递的值(比如说 value1/value3),不要碰其他的(这就是我制作它们的原因nullable();)。
但是,每次我创建记录时,如果某些值留空,它们会被更新为 null,无论它们是否已经包含来自先前条目的数据,并且假设我之前已经填充了 value1 1,现在再次插入1,它不会变成2(不添加每个请求的值,只是更新它们)。我觉得我在这件事上完全错了,但我对mySQL 和Eloquent 还很陌生,所以如果有人能在这里帮助我,那就太好了!提前致谢!
【问题讨论】:
-
你没有使用 eloquent,只是查询构建器,顺便说一句
标签: mysql laravel vue.js eloquent