第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Laravel - 我的雙重提交解決方案有效嗎

Laravel - 我的雙重提交解決方案有效嗎

PHP
瀟瀟雨雨 2023-10-21 10:10:39
這是我的第一個(gè)問題,所以請放輕松。我使用 Laravel 一段時(shí)間了;然而,最近我在測試客戶端應(yīng)用程序時(shí)遇到了一個(gè)問題。問題是,如果用戶雙重提交或簡單地單擊提交按鈕 x 次,那么相同的記錄將在數(shù)據(jù)庫中創(chuàng)建 x 次。我以前從未遇到過這個(gè)問題,因?yàn)楹唵蔚奈ㄒ或?yàn)證就可以實(shí)現(xiàn)這一點(diǎn)。然而,這種形式(或確切的模型)允許具有相同值/重復(fù)項(xiàng)的數(shù)據(jù)(客戶端應(yīng)用程序要求)。所以我做的第一件事如下:public function store(CustomRequest $request){    if($lastEntry = Record::latest()->first()){        if(            ($request->name == $lastEntry->name)            && ($request->another == $lastEntry->another)            //  && ($request->user()->id == $lastEntry->user_id) // Current user check (need to modify the $lastEntry for it to work efficiently!)            && (now()->diffInMinutes($lastEntry->created_at) < 5) // I added this later as another way to allow duplicates records after each other if they were created 5m apart        ){            return redirect()                    ->route('show.record', $lastEntry->id)                    ->with('success', 'Record has been created successfully.');        }    }    $record= new Record();    ....}現(xiàn)在,經(jīng)過測試,效果很好。但是,我的問題是,是否有任何內(nèi)置解決方案、軟件包或更好的解決方案?另外,我應(yīng)該做一個(gè)會話解決方案以獲得更快的響應(yīng) - 因?yàn)椋绻义e(cuò)了,請糾正我,但如果它位于具有 > 500k 記錄的表上,這不會很慢嗎?編輯:我考慮過為此制作一個(gè)自定義節(jié)流中間件,但這會是一個(gè)壞主意,你覺得怎么樣?另外,正如 @nice_dev 提到的,用戶越多,就會出現(xiàn)雙重情況,所以我考慮在記錄表中添加 user_id 字段并獲取當(dāng)前用戶創(chuàng)建的最后一條記錄,但我仍然認(rèn)為這是一個(gè)糟糕的解決方案。不幸的是,Javascript 解決方案不會解決這個(gè)問題編輯:我所說的 Javascript 解決方案的意思是,一旦單擊按鈕,就會禁用它類型的解決方案(任何客戶端解決方案)。順便說一句,客戶端應(yīng)用程序最終每個(gè)表將擁有超過 500k 條記錄(至少在第一年左右)。請隨意修改我的問題......就像我說我是新來的!
查看完整描述

1 回答

?
繁華開滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊

因?yàn)?,我的情況有點(diǎn)獨(dú)特,所以我采用了相同的解決方案,但在記錄表(FK)上添加了 user_id 列。并檢查同一用戶在過去x分鐘內(nèi)是否創(chuàng)建了相同的記錄(因?yàn)榭蛻舳讼胍貜?fù)的記錄但不允許用戶出錯(cuò))。

盡管如此,我還是添加了一段 JavaScript 代碼來禁用該按鈕,以防萬一??蛻粜枰环N后端解決方案,而不是客戶端解決方案。但不妨補(bǔ)充一點(diǎn),因?yàn)槲矣悬c(diǎn)解決了這個(gè)問題(有點(diǎn))。

查看完整回答
反對 回復(fù) 2023-10-21
  • 1 回答
  • 0 關(guān)注
  • 146 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號