繁体   English   中英

更新数据库中的复选框值

[英]Update checkbox values in database

从复选框表单更新记录发送的最佳方法是什么。 如何知道哪一个未经检查。

我的算法取消设置所有值而不是再次设置并检查来自请求的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();
    }

我想执行更好的解决方案,其中只有表单中的值在后端“触摸”。

像这样创建它,不要忘记用实际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(); 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM