【问题标题】:Saving multiple checkboxes data into database laravel将多个复选框数据保存到数据库 laravel
【发布时间】:2018-05-08 00:13:37
【问题描述】:

大家好,我需要一些帮助,将多个复选框保存到数据库中。我试过这样做,但它似乎不起作用。我不太确定如何正确使用它,但这就是我的做法,有人可以纠正我如何正确使用它吗?提前致谢。

这是我的代码:(当前出现此错误:Array to string conversion 在 else 中指向此部分,$id->evaluations()->save($Evaluation);

 if(count($request->input('Pending_Remarks1')|| $request->input('Pending_Remarks2') || $request->input('Pending_Remarks3')) >1){
       $Evaluation['Pending_Remarks1'] = implode(' , ', $request->Pending_Remarks1);
       $Evaluation['Pending_Remarks2'] = implode(' , ', $request->Pending_Remarks2);
       $Evaluation['Pending_Remarks3'] = implode(' , ', $request->Pending_Remarks3);
       $id = $request->user_id;
        $id= PersonalInfo::find($id);
        $id->evaluations()->save($Evaluation);
   }else{

        $Evaluation->Pending_Remarks1 = $request->input('Pending_Remarks1');
        $Evaluation->Pending_Remarks2 = $request->input('Pending_Remarks2');
        $Evaluation->Pending_Remarks3 = $request->input('Pending_Remarks3');
         $id = $request->user_id;
        $id= PersonalInfo::find($id);
        $id->evaluations()->save($Evaluation);
   }

过去,我做过类似的事情并且它可以工作,但是当我尝试对待处理的备注代码执行此操作时,它就不起作用了。

 if(count($request->input('Driver_license_class'))>1){
       $testa['Driver_license_class'] = implode(' , ', $request->Driver_license_class);
       $object->update($testa);
   }else{

        $object->Driver_license_class = $request->input('Driver_license_class');
        $object->update();
   }

【问题讨论】:

    标签: php laravel save


    【解决方案1】:

    假设你得到的错误是第一个$id->evaluations()->save($Evaluation);),我相信你需要设置该对象的属性而不是设置数组。看起来 Laravel 无法保存数据,因为它是标准数组。

     if(count($request->input('Pending_Remarks1')|| $request->input('Pending_Remarks2') || $request->input('Pending_Remarks3')) >1){
       $Evaluation->Pending_Remarks1 = implode(' , ', $request->Pending_Remarks1);
       $Evaluation->Pending_Remarks2 = implode(' , ', $request->Pending_Remarks2);
       $Evaluation->Pending_Remarks3 = implode(' , ', $request->Pending_Remarks3);
    
    }else{
    
        $Evaluation->Pending_Remarks1 = $request->input('Pending_Remarks1');
        $Evaluation->Pending_Remarks2 = $request->input('Pending_Remarks2');
        $Evaluation->Pending_Remarks3 = $request->input('Pending_Remarks3');
    
    }
    
    if(isset($request->user_id)){ 
         $id = $request->user_id;
         $id= PersonalInfo::find($id);
         $id->evaluations()->save($Evaluation);
    }
    

    【讨论】:

    • 抱歉没有说清楚,我忘记了问题中有2个类似的部分,错误实际上是指向else部分而不是if部分所以你的答案还需要改变吗?
    • 啊,所以当没有选中复选框时您无法保存?如果是这样,它在“if”部分工作是有道理的,因为您将它们保存为字符串,而不是直接 $_GET['Pending_Remarks'] 可能包含一个空数组。
    • 是的,我不知道为什么,但在我的旧代码中我试过它可以工作,但现在我不知道我哪里出错了,我已经在我的数据库中放置了 nullable,所以我能够如果它是空的,仍然提交
    • 你应该 dd $request->input('Pending_Remarks1' 并确保它是一个字符串。
    • 它根据我的问题给了我一个数组,这是否意味着我也必须对 else 语句进行内爆?
    猜你喜欢
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2019-11-24
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多