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 ?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
The json datatype can not have default values in MySQL. Use the $attributes
instead.
/** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'interests' => 'array', ]; protected $attributes = [ 'interests' => [], ];
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0