Обновить значения флажков в базе данных - PullRequest
0 голосов
/ 29 апреля 2019

Как лучше всего обновить записи, отправленные из формы флажка.Как узнать, какие из них не были проверены.

Мой алгоритм сбрасывает все значения, после чего идет снова, и проверяет идентификаторы из запроса.Более того, это вызывает проблемы с отметками времени, потому что все значения обновляются каждый раз.

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 Ответ

0 голосов
/ 29 апреля 2019

Создайте это так, не забудьте заменить $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(); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...