我试图保护数据库中的一些数据,但得到以下错误:
SQLSTATE01000:警告:第1行的列'nsfw‘的1265数据被截断
nsfw列的标准值为0。那是我的桌子:
nsfw列也在models $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();
谢谢你的帮助,对我糟糕的英语表示抱歉!
发布于 2017-07-10 18:22:48
转到connections.mysql
中的config/database.php
,将strict设置为false,然后尝试再次运行它,如果没有错误,请检查是否正确插入了数据。如果不这样做,那么您在前面提到的列中输入了错误的数据类型,因此请将代码设置为将值存储为字符串:
if ($nsfw == true) {
$thread->nsfw = '1';
} else {
$thread->nsfw = '0';
}
发布于 2018-04-06 09:34:55
当严格模式为true时,您会得到错误,这意味着您在代码中有其他错误,例如,错误的数据类型或拼写错误。
利奥的答案是正确的。我只想强调一下,您应该再次将严格模式重置为true。
发布于 2021-04-11 09:42:29
另外,检查数据库列的拼写错误,或者列中存在enum
值。
https://stackoverflow.com/questions/45018780
复制相似问题