10月cms,无法保存具有空值的模型

时间:2018-05-23 16:09:28

标签: php octobercms

我是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)

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

2 个答案:

答案 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',
    ];