1366 不正确的整数值:Laravel 4

1366 Incorrect integer value: Laravel 4

我不断收到 Incorrect integer value: '' for column 'stock'

这是我迁移的方式stock

$table->integer('stock')->nullable()->default(0)->unsigned();

以下是我如何抓取它入库

$inventory->stock = $value[2]; // 一些数据是 ''= 空字符串

有没有办法为它设置一个默认值? 如何停止此错误消息?

在尝试保存之前检查数据。从你的例子来看,看起来你将在一个字符串中有一个整数值,所以你可以这样做这个:

$inventory->stock = ctype_digit($value[2]) ? $value[2] : 0;

如果不是 0,则为 null,或其他一些默认值。

如果您确定这些值是空字符串还是整数,甚至可以这样:

$inventory->stock = $value[2] ?: 0;

如果您没有股票,您也可以不添加股票,因为无论如何您都有该列的默认值。

只需将值转换为整数即可。我个人最喜欢选角:

$inventory->stock = (int) $value[2];

但是您也可以使用 intval($value[2]) 或添加零:$value[2] + 0.

如果您不想在控制器中担心它,请在模型中创建一个修改器:

public function setStockAttribute($value){
    $this->attributes['stock'] = (int) $value;
}

您可以像以前一样分配它:

$inventory->stock = $value[2];