更新復選框形式發送的記錄的最佳方法是什么。如何知道哪一個未被選中。我的算法未設置所有值,然后再次檢查并從請求中檢查ID。此外,由于所有值每一次都會更新,因此會引起時間戳問題。public function plansUpdate(Request $request){ //set all plans as not default to handle unchecked $plans = $this->planService->getAllPlans()->pluck('id'); PlanModel::whereIn('id', $plans)->update(['is_default' => false]); //set checked plans as default $defaultPlans = $request->get('default-plans'); PlanModel::whereIn('id', $defaultPlans)->update(['is_default' => true]); return redirect()->back(); }我想執行更好的解決方案,其中僅在表單中更改的值在后端被“觸摸”。
1 回答

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
像這樣創建它,不要忘記$id用實際的ID替換:
<input type="hidden" name="default_plans[$id]" value="0" />
<input type="checkbox" name="default_plains[$id]" value="1" />
然后在您的php代碼中遍歷模型并在事務中更新它們。
public function plansUpdate(Request $requets) {
$plans = $this->planService->getAllPlans();
$defaultPlans = $request->get('default_plans');
DB::beginTransaction();
foreach($plans as $plan) {
$plan->is_default = boolval($defaultPlans[$plan->id] ?? false);
$plan->save();
}
DB::commit();
}
- 1 回答
- 0 關注
- 163 瀏覽
添加回答
舉報
0/150
提交
取消