Home > Mobile >  Set default empty array in laravel migration
Set default empty array in laravel migration

Time:10-06

I want to set empty array for column interests. I've added field as json and cast it as array in my model. Below are my code snippets :

/**
     * 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');
            }
        });
    }

Also in model :

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

So what i need to do to show default [] in interests column ?

CodePudding user response:

In your model do following as in my knowledge for json datatype in mysql can not have default values

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

protected $attributes = [
    'interests' => [];
];
  • Related