十月cms,无法保存空值模型

3

我创建了一个模型,包含以下列:

like4u_id, vtope_id, panel_id

我将这些列的选项设置为可空,但是如果我保存模型,会出现错误:

SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'like4u_id' at row 1 (SQL: update master_vars set updated_at = 2018-05-23 16:03:14, like4u_id = , vtope_id = where id = 328)

问题在哪里?这个字段不是必需的并且列是可空的。


2
你更新了数据库表吗? - u_mulder
你是否已经在$fillable中添加了所有字段? - Chirag Patel
1
你是手动保存还是使用后端表单保存?如果是手动保存,能否分享一下你的代码,以及你是如何保存的? - Hardik Satasiya
2个回答

1
当表单字段为空但应包含数据库中的“整数”值时,一些引擎将尝试将空字符串插入整数字段。
这就是导致错误消息的原因,基本上是试图将正方形塞进圆孔。
如果您实现Nullable trait,您可以确保这些字段(如果留空)被插入为真正的NULL而不是字符串。
我更喜欢在类上面使用trait作为use语句,然后在类本身中使用短的use。
如果您不希望它出现在两个位置,则可以直接在类中使用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',
    ];

1
这可能发生在MySQL数据库中。 当属性为空时,您需要在模型中使用Nullable特性将其设置为NULL。 这里是<docs>可空特性的文档。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接