Laravel - 在数据库中存储多个复选框表单值

Posted

技术标签:

【中文标题】Laravel - 在数据库中存储多个复选框表单值【英文标题】:Laravel - Store multiple checkbox form values in database 【发布时间】:2019-02-26 01:24:31 【问题描述】:

所以我有这个代码

查看:

<div id="checkboxes">
                         <input type="checkbox" class="checkbox" name="services" value=" $service->id " id=" $service->id " />
                         <label class="whatever" for=" $service->id "><p class="serv-text">  $service->service_name  + $ $service->price  </p></label>
                             </div>

控制器:

  public function store(Request $request)
    
       orders::create(Request::all());
        return 'test';
    

型号:

class orders extends Model

    protected $fillable = [
    'category', 
    'services',
    'total_price',
    'user_id',
    'status',
    'user_id'];

当我尝试提交表单时,即使我在提交表单时选中了多个框,在服务的数据库中也只有一个数字。 我试图在谷歌上找到一个解决方案,但没有。

【问题讨论】:

【参考方案1】:

如果你有多个这样的复选框:

<input type="checkbox" name="services" value="1"/>
<input type="checkbox" name="services" value="2"/>
<input type="checkbox" name="services" value="3"/>

它只会向服务器发送一个值,因为名称必须是唯一的。解决方法是使用数组输入:

<input type="checkbox" name="services[]" value="1"/>
<input type="checkbox" name="services[]" value="2"/>
<input type="checkbox" name="services[]" value="3"/>

然后您可以在控制器中获取该输入并执行以下操作:

$services = $request->input('services');
foreach($services as $service)
 orders::create($service);

在 Laravel 中验证数组:

https://laravel.com/docs/5.7/validation#validating-arrays

关于输入数组的更多信息:

https://developer.mozilla.org/en-US/docs/Web/html/Element/input/checkbox#Handling_multiple_checkboxes

How to get form input array into php array

【讨论】:

以上是关于Laravel - 在数据库中存储多个复选框表单值的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 表单模型绑定复选框值

我正在尝试将复杂复选框表单的值存储在 mysql 数据库中

从多个复选框中获取表单数据

使用 PHP 将 JSON 数据放入 html 表单输入复选框

Laravel:如何在没有表单操作的情况下提交复选框值?

如何知道是不是选中了表单中的多个复选框并将值插入数据库表c#