【问题标题】:October cms, cant save model with empty values十月 cms,无法使用空值保存模型
【发布时间】:2018-11-02 17:10:16
【问题描述】:

我创建了带有列的模型:

like4u_id、vtope_id、panel_id

我设置了这些列选项 - 可空,但如果我保存模型,我得到错误:

SQLSTATE[HY000]:一般错误:1366 不正确的整数值:'' for 第 1 行的列“like4u_id”(SQL:更新 master_vars 设置updated_at = 2018-05-23 16:03:14, like4u_id = , vtope_id = 其中id = 328)

有什么问题?它的字段不是必需的,并且列可以为空..

【问题讨论】:

  • 你更新过数据库表了吗?
  • $fillable 中的所有字段都添加了吗?
  • 您是手动保存还是使用后端表单保存。如果手动保存,请分享您的代码。如何保存。

标签: php octobercms


【解决方案1】:

这可能发生在 MySQL 数据库中。 您需要在模型中使用 Nullable 特征,以便在留空时将属性设置为 NULL。

这里是 Nullable 特征的 docs

【讨论】:

    【解决方案2】:

    当表单字段为空但应在数据库中包含“整数”值时,某些引擎会尝试将空字符串插入整数字段。
    这就是导致错误消息的原因,基本上是试图将正方形穿过圆孔。

    如果您实现Nullabletrait,您可以确保这些字段(如果留空)作为真正的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',
        ];
    

    【讨论】:

      猜你喜欢
      • 2018-05-31
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多