在Laravel 5中将复选框添加到数据库

时间:2015-04-12 16:11:36

标签: laravel checkbox laravel-5

我在HTML和数据库方面不是100%,但是我到了那里。我做了什么但是当我编辑一个有复选框的页面时却没有。

在我的数据库迁移中:

$table->string('check_this')->nullable();

在观看中:

<div class="checkbox">
    @if ($job->check_this == 'selected')
         <label><input type="checkbox" name="check_this" value="selected" checked>Yes.</label>
    @else
         <label><input type="checkbox" name="check_this" value="selected">Yes.</label>
   @endif
</div>

选中复选框后,它会写入数据库,因此我的if语句无法正常工作。有没有办法,如果取消选中它会删除数据库中的值?

也许我认为这是错误的方式,因为迁移中的复选框格式正确。

2 个答案:

答案 0 :(得分:0)

您的迁移应如下所示: $table->boolean('check_this');

和视图部分: @if ($job->check_this)

请参阅:http://laravel.com/docs/master/schema#adding-columns了解Laravel中所有可用类型的“列”。

答案 1 :(得分:0)

如果没有收到任何内容,则复选框不会发送任何内容,因此除非您检入控制器并且是否&#34; check_this&#34;否则数据库将不会更新。未在您的请求中设置,在数据库中将此值设置为0。

$obj = Obj::find($id); //get your object from database 
$input = Request::all(); //or $request->all() if you use requests
if(!isset($input['check_this'])){
 $input['check_this'] = 0; //or whatever you want
}
$obj->fill($input);
$obj->save();

注意: 您可以简化视图

<div class="checkbox">
     <label><input type="checkbox" name="check_this" value="selected" @if ($job->check_this == 'selected') checked @endif>Yes.</label>
</div>

当然,如果你不需要这个特定的字符串,那么在这个字段中使用布尔值的答案会优化你的数据库。