我不断获得Incorrect integer value: '' for column 'stock'
以下是我迁移stock
$table->integer('stock')->nullable()->default(0)->unsigned();
以下是我如何抓住它存入库存
$inventory->stock = $value[2];
//某些数据是''=空字符串
有没有办法为它设置默认值? 如何停止此错误消息?
答案 0 :(得分:1)
只需将值转换为整数即可。我个人最喜欢铸造:
$inventory->stock = (int) $value[2];
但是,您也可以使用intval($value[2])
或添加零:$value[2] + 0
。
如果您不想在控制器中担心它,请在模型中创建一个mutator:
public function setStockAttribute($value){
$this->attributes['stock'] = (int) $value;
}
你可以像以前一样分配它:
$inventory->stock = $value[2];
答案 1 :(得分:0)
在尝试保存之前检查数据。从您的示例中,您看起来在字符串中将有一个整数值,因此您可以执行以下操作:这样:
$inventory->stock = ctype_digit($value[2]) ? $value[2] : 0;
如果不是0,则为null或其他一些默认值。
如果您确定值为空字符串或整数:
,甚至可以这样做$inventory->stock = $value[2] ?: 0;
如果你没有股票,你也可能只是不添加股票,因为你有一个默认的列。