【发布时间】:2017-12-14 14:03:06
【问题描述】:
我正在尝试保护我的数据库中的一些数据并收到以下错误:
SQLSTATE[01000]:警告:1265 第 1 行的列“nsfw”的数据被截断
nsfw 列的标准值为 0。那是我的桌子:
nsfw 列也在模型$fillable 数组中。
我想检测是否选中了复选框。勾选则nsfw为1,不勾选则nsfw为0。
这是复选框的 HTML 代码:
<div class="form-group">
<label for="nsfw" class="control-label">NSFW</label>
<br>
<input type="checkbox" name="nsfw">
</div>
这就是控制器代码:
if (Input::get('nsfw')) {
$nsfw = true;
} else {
$nsfw = false;
}
// dd($nsfw) gives me true or
//false back, depending if the checkbox is checked or not
$thread = new Thread();
$thread->name = Input::get('thread-name');
$thread->description = Input::get('thread-desc');
$thread->age_min = Input::get('thread-min-age');
$thread->age_max = Input::get('thread-max-age');
if ($nsfw == true) {
$thread->nsfw = 1;
} else {
$thread->nsfw = 0;
}
$thread->save();
感谢您的帮助,并为我的英语不好感到抱歉!
【问题讨论】:
-
你有一个枚举并且你插入了一个枚举中不存在的值
-
但唯一可能的值是 1 或 0。这就是我想要推入数据库的内容吗?
-
到connections.mysql中的config/database.php设置strict为false,然后尝试再次运行它,如果你没有错误检查你是否正确插入了数据
-
好的,我这样做了,线程得到了保存。但在数据库中,该值只是 Null。不是 0。
-
尝试将代码上的值设为字符串 $thread->nsfw = '1';