Php laravel中表单的值错误

Php laravel中表单的值错误,php,database,laravel,Php,Database,Laravel,我有一个隐私功能。如果public=1,则帖子是公共的,否则如果为0,则帖子是私有的。我有以下切换: <label class="toggle" style="right: 185px">{{ Form::checkbox('public') }}<i class="no-rounded privancy"></i></label> {{Form::checkbox('public')} 默认情况下,切换设置为public,但在提交时,在数据库

我有一个隐私功能。如果
public=1
,则帖子是公共的,否则如果为0,则帖子是私有的。我有以下切换:

<label class="toggle" style="right: 185px">{{ Form::checkbox('public') }}<i class="no-rounded privancy"></i></label>
{{Form::checkbox('public')}

默认情况下,切换设置为public,但在提交时,在数据库中,我在列
public
中接收
NULL
。如果我按下private上的按钮,在数据库中我会收到
1
,其中1表示PUBLIC。它是怎么工作的?因为我需要这个,我怎么能让它工作呢

如果查看生成复选框的代码,您将看到它最多可以包含4个参数,第三个参数是默认情况下是否选中该复选框,以及值是什么。默认情况下,该值为1。因此,当您检查它时,它将返回1

public static function checkbox($name, $value = 1, $checked = null, $options = array())
{
    return \Collective\Html\FormBuilder::checkbox($name, $value, $checked, $options);
}
只需将表单的值更改为2,即可在选中时返回2

Form::checkbox('public', 2)

正如您在评论中指出的,未选中的复选框将不会被提交,因此您必须在保存时签入控制器

Unchecked复选框值在提交表单后将不会被提交,我收到
SQLSTATE[23000]:完整性约束冲突:1048列“public”不能为null
您可以共享在数据库中插入数据的php代码吗
<?php
$public = 0; // set default value as `0` indicating post is not public
if(isset($_POST['public'])) {
   $public = 1; // if the public checkbox is checked while sumitting the form then set value as `1`
}