我是cretead模型,有列:
like4u_id,vtope_id,panel_id
我设置了这些列选项 - Nullable,但如果我保存模型,我会收到错误:
SQLSTATE [HY000]:常规错误:1366不正确的整数值:''表示 第1行的列'like4u_id'(SQL:更新
master_vars
设置updated_at
= 2018-05-23 16:03:14,like4u_id
=,vtope_id
=其中id
= 328)
有什么问题?它的字段不是必需的,列可以为空。
答案 0 :(得分:1)
MySQL数据库可能会发生这种情况。
您需要在模型中使用Nullable
特性,将属性留空后将属性设置为NULL。
这里是可空特征的docs
答案 1 :(得分:0)
当表单字段为空但在数据库中应包含“整数”值时,某些引擎将尝试将空字符串插入整数字段。
这就是导致错误消息的原因,基本上是试图使正方形穿过圆孔。
如果实现Nullable trait,则可以确保将这些字段(如果留空)插入为真实的NULL
而不是字符串
我更喜欢将trait用作类之上的use语句,然后将int简短地用于类本身。
如果您不希望它出现在两个位置,也可以通过use \October\Rain\Database\Traits\Nullable;
而不是use Nullable;
将其直接放在班级中。这取决于您的偏好。
use Model;
use October\Rain\Database\Traits\Nullable;
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/**
* Page Model
*/
class ModuleLink extends Model
{
public $table = 'your_table_name_here';
use Nullable; // This sets the trait to be used in this Model.
//^^^^^^^^^^^^^
public $nullable = [
'module_id', // Define which fields should be inserted as NULL when empty
'sort_order',
];