在 laravel 迁移中设置默认的空数组

Posted

技术标签:

【中文标题】在 laravel 迁移中设置默认的空数组【英文标题】:Set default empty array in laravel migration 【发布时间】:2021-11-26 13:12:23 【问题描述】:

我想为列兴趣设置空数组。我已将字段添加为 json 并将其转换为我的模型中的数组。以下是我的代码 sn-ps :

/**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    
        Schema::table('db_invitations', function (Blueprint $table) 
            if(!Schema::hasColumn('db_invitations','interests'))
                $table->json('interests');
            
        );
    

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    
        Schema::table('db_invitations', function (Blueprint $table) 
            if(Schema::hasColumn('db_invitations','interests'))
                $table->dropColumn('interests');
            
        );
    

也在模型中:

/**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'interests' => 'array'
    ];

那么我需要做什么才能在兴趣列中显示默认 []?

【问题讨论】:

->default('[]') 也许?我的问题是,你为什么要这样做而不是保持 NULL 值? 【参考方案1】:

json 数据类型在 MySQL 中不能有默认值。请改用$attributes

/**
 * The attributes that should be cast to native types.
 *
 * @var array
 */
protected $casts = [
    'interests' => 'array',
];

protected $attributes = [
    'interests' => [],
];

【讨论】:

以上是关于在 laravel 迁移中设置默认的空数组的主要内容,如果未能解决你的问题,请参考以下文章

在迁移 laravel 5.1 中设置自动增量字段从 1000 开始

如何在 Laravel 模型上设置属性的默认值 [重复]

如何在 Laravel 中设置默认控制器?

如何使用 django 1.7.3/postgres 迁移在数据库中设置默认列值?

Laravel SQLite 字段的默认值

每个数据库使用一个 Laravel 迁移表