我正在使用 Laravel 5.6.29
if ( HarmFlag::where('post_id', '=', $postId)->where('harm_id', '=', $harm_id)->get()->isEmpty() ) {
HarmFlag::create([
'post_id' => $postId,
'harm_id' => $harm_id,
'gif_flag' => $gif_flag
]);
} else {
$harmFlag = HarmFlag::where('post_id', '=', $postId)->where('harm_id', '=', $harm_id)->first();
$harmFlag->gif_flag = $gif_flag;
$harmFlag->save();
}
现在可以看到有重复的记录harm_id=18604
and harm_id=18605
,但根据我的编码,它不应该发生。
Update
也将代码更改为
$harmFlag = HarmFlag::firstOrNew(['post_id' => $postId, 'harm_id' => $harm_id]);
$harmFlag->gif_flag = $gif_flag;
$harmFlag->save();
但仍然得到重复的条目。
有趣的是,对于每个重复记录,时间戳也是相同的。所有这些情况也只有第二条记录。
移民
Schema::create('harm_flags', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('post_id');
$table->unsignedInteger('harm_id');
$table->boolean('gif_flag')->default(0);
$table->timestamps();
$table->foreign('post_id')->references('post_id')->on('posts');
$table->foreign('harm_id')->references('harm_id')->on('base_harms');
});
Update 2
变成
HarmFlag::updateOrCreate(
['post_id' => $postId, 'harm_id' => $harm_id],
[
'gif_flag' => $gif_flag,
]
);
但仍然得到重复的记录。